And*_*rea 6 javascript nested function object literals
如果在文字对象中我试图在嵌套属性/函数中使用"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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
object.f1(); // Work
object.d.f2(); //不要工作 object.e.f3(); //工作
谢谢,安德烈.
this指d内f2而不是object.您可以存储对象的引用,或object直接调用,或使用call/ apply来调用该函数并明确告诉它this该函数内部的含义:
object.d.f2.call(object); // now this refers to object inside f2
Run Code Online (Sandbox Code Playgroud)
这是基于@slaver113 的想法的另一种方法,它不会改变thisinside的上下文: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'
Run Code Online (Sandbox Code Playgroud)