Javascript 文本对象内的嵌套函数
如果在文本对象中,我尝试在嵌套属性/函数中使用“this”引用函数,则这不起作用。为什么?嵌套属性有自己的作用域吗 例如,我想从d.f2内部调用f1:Javascript 文本对象内的嵌套函数,javascript,object,function,nested,literals,Javascript,Object,Function,Nested,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(); } },
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();//工作
谢谢你,安德里亚。
这个
指的是f2
里面的d
,而不是对象
。您可以存储对对象的引用,或直接调用对象
,或使用调用
/应用
调用函数,并明确告诉它该在该函数中的含义:
object.d.f2.call(object); // now this refers to object inside f2
这里有一种替代方法,它不会改变
this
内部f2()
的上下文,基于:
var对象=(函数(){
var_这={
f1:函数(){
警报(“这是f1”);
},
d:{
f2:函数(){
_这是f1();
}
}
}
把这个还给你;
})();
object.d.f2();//提醒“这是f1”
在f2内部,此
指向模块模式的d
,而不是对象
+1