文字对象内的嵌套函数
如果在文字对象中我尝试在嵌套属性/函数中使用“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(); // 工作
对象.d.f2(); // 不工作。
对象.e.f3(); // 工作
谢谢,安德里亚。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
this
指的是f2
中的d
,而不是object
。您可以存储对对象的引用,或者直接调用object
,或者使用call
/apply
来调用函数并明确告诉它什么this
表示在该函数内部:this
refers tod
insidef2
and notobject
. You could store a reference to object, or callobject
directly, or usecall
/apply
to call the function and explicitly tell it whatthis
means inside that function:这是一种基于 f2() 内
this
的上下文/192886">@slaver113 的想法:Here's an alternative approach which doesn't change the context of
this
insidef2()
, based on @slaver113's idea: