[英]Nested function inside literal Object
如果在文字对象中我试图在嵌套属性/函数中使用“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(); //工作
谢谢,安德烈。
this
指的是f2
里面的d
而不是object
。 你可以存储一个参考对象,或拨打object
直接,或使用call
/ apply
调用的函数,并明确地告诉它this
意味着函数内:
object.d.f2.call(object); // now this refers to object inside f2
这里是不改变的情况下的替代方法this
里面f2()
的基础上, @ slaver113的想法 :
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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.