Javascript嵌套json函数:访问“this”

时间:2012-12-14 09:15:59

标签: javascript

如果我有这个json结构:

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

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

修改

我正在尝试:

j.func();

2 个答案:

答案 0 :(得分:5)

this取决于函数的调用方式。要回答您的问题,我们需要了解您的调用方式func()

如果你打电话:

j.func()

然后,this内的func将设置为j

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

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);
调用者也可以使用thisj.func.apply()明确设置

j.func.call(),这允许调用者指定所需的this值。

答案 1 :(得分:0)

你只需要调用 j.func(),这在func中将引用j,因为它是调用者。