[英]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.