如果我有这个json结构:
var j = {
param1: 'hello',
param2: 'world',
func: function() {
console.log(this.param1 + ' ' + this.param2);
}
};
this
中的 func
未定义。如何在这个json对象中访问self?感谢
修改
我正在尝试:
j.func();
答案 0 :(得分:5)
this
取决于函数的调用方式。要回答您的问题,我们需要了解您的调用方式func()
。
如果你打电话:
j.func()
然后,this
内的func
将设置为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
值。
答案 1 :(得分:0)
你只需要调用 j.func(),这在func中将引用j,因为它是调用者。