-1

如果我有这个 json 结构:

var j = {
    param1: 'hello',
    param2: 'world',
    func:   function() {
        console.log(this.param1 + ' ' + this.param2);
    }
};

thisinfunc未定义。如何在这个 json 对象中访问 self?谢谢

编辑:

我正在尝试:

j.func();
4

2 回答 2

5

this由函数的调用方式决定。要回答你的问题,我们需要看看你是怎么称呼的func()

如果你打电话:

j.func()

然后,thisinside offunc将被设置为j.

如果您func()直接调用(如果您j.func作为回调传递,然后由其他函数直接调用,则会发生这种情况),那么this可能会被设置为window或者undefined取决于您是否处于严格模式。例如:

function callme(callback) {
    // the context of `j` will be lost here and 
    // this will just call func() directly without setting this to j
    callback();
}

callme(j.func);

this也可以由调用者通过使用j.func.apply()j.func.call()允许调用者指定所需的值来显式设置this

于 2012-12-14T09:19:44.240 回答
0

您只需要调用j.func()并且 func 中的 this 将引用 j,因为它是调用者。

于 2012-12-14T09:20:01.180 回答