我有这个简单的代码:
var o = {
a: 1,
b: 2,
f1: function ()
{
alert(this.b);
}
}
var o2 = {
a: 11,
b: 22,
f2: function (j)
{
j();
}
}
但是运行这段代码:
o2.f2(o.f1)
产生undefined。(虽然我期待“22”作为结果)
现在,我知道上下文已经到了某个地方。因此,如果我将代码更改o2
为:
f2: function (j)
{
j.apply(this);
}
它确实有效。
但我的问题是:
- 我在哪个阶段失去了上下文?
我不明白:j()
运行时,对象中有一个b
属性o2
。
我错过了什么?