【问题标题】:in javascript, "this" seems to get lost when function in within an object's object在 javascript 中,当函数在对象的对象中时,“this”似乎会丢失
【发布时间】:2011-08-01 06:37:22
【问题描述】:
对象 F 有一个存储为 this.fn 和 this.state.fn 的函数。 f.fn() 可以调用成功,但f.state.fn() 不能调用
函数 F( i, f ) {
这个.i = i;
this.state = {'fn':f };
这.f = f;
};
F.prototype.inc = function() { this.i++ };
F.prototype.fn = function() { this.state.fn() };
f1 = new F(1, function() { console.log( this.i ); } );
f1.f(); // 这行得通
f1.inc(); // 这行得通
f1.state.fn; //打印函数
f1.fn(); // 不明确的!
f1.state.fn(); // 不明确的!
问题似乎是函数存储在对象state中,因为这样可行:
f1.state.fn.call(f1);
F.prototype.fn = function() { this.state.fn.call(this); };
这似乎暗示F.state.fn 中的this 上下文不是 F 而是F.state - 这对我来说完全违反直觉 - 这是对的吗!?
【问题讨论】:
标签:
javascript
object
scope
this