如果我有这个 json 结构:
var j = {
param1: 'hello',
param2: 'world',
func: function() {
console.log(this.param1 + ' ' + this.param2);
}
};
this
infunc
未定义。如何在这个 json 对象中访问 self?谢谢
编辑:
我正在尝试:
j.func();
如果我有这个 json 结构:
var j = {
param1: 'hello',
param2: 'world',
func: function() {
console.log(this.param1 + ' ' + this.param2);
}
};
this
infunc
未定义。如何在这个 json 对象中访问 self?谢谢
编辑:
我正在尝试:
j.func();
this
由函数的调用方式决定。要回答你的问题,我们需要看看你是怎么称呼的func()
。
如果你打电话:
j.func()
然后,this
inside 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
。
您只需要调用j.func()并且 func 中的 this 将引用 j,因为它是调用者。