如果在文字对象中我试图在嵌套属性/函数中使用“this”引用函数,这不起作用。为什么?嵌套属性有自己的范围吗?
例如,我想从d.f2中调用f1:
var object = {
a: "Var a",
b: "Var b",
c: "Var c",
f1: function() {
alert("This is f1");
},
d: {
f2: function() {
this.f1();
}
},
e: {
f3: function() {
alert("This is f3");
}
}
}
object.f1(); //工作
object.d.f2(); //不要工作
object.e.f3(); //工作
谢谢,安德烈。
答案 0 :(得分:9)
this
引用d
内的f2
而非object
。您可以存储对象的引用,或直接调用object
,或使用call
/ apply
来调用该函数,并明确告诉它this
在该函数中的含义:< / p>
object.d.f2.call(object); // now this refers to object inside f2
答案 1 :(得分:4)
这是一种替代方法,它不会根据@slaver113's idea更改this
内f2()
的内容:
var object = (function() {
var _this = {
f1: function() {
alert('This is f1');
},
d: {
f2: function() {
_this.f1();
}
}
}
return _this;
})();
object.d.f2(); // Alerts 'This is f1'