在下面的代码片段中,我试图访问nameHe,它是一个成员函数sayHi的成员变量。我怎样才能做到这一点?成员函数如何访问成员变量?
obj = {
name:"John",
sayHi:()=>{
console.log("Hi " + name);
}
}
obj.sayHi();
在下面的代码片段中,我试图访问nameHe,它是一个成员函数sayHi的成员变量。我怎样才能做到这一点?成员函数如何访问成员变量?
obj = {
name:"John",
sayHi:()=>{
console.log("Hi " + name);
}
}
obj.sayHi();
箭头函数表达式最适合非方法函数。看来你想sayHi
使用obj
的name
财产。因此,您希望使用sayHi
作为方法, ,在这种情况下,箭头函数不适用于此目的。
如果您改变箭头函数表达式匿名函数, 那么你可以使用this.name
来指代对象的name
属性上,您将调用sayHi
功能:
obj = {
name: "John",
sayHi: function() {
console.log("Hi " + this.name);
}
}
obj.sayHi(); // prints "Hi John"
一个很好的资源关于箭头函数表达式是developer.mozilla.org上的这个页面。
你不必像@janos说的那样使用匿名函数。当你使用箭头功能,this
是指你的对象是在定义的类或上下文所以,你可以通过调用this.obj.name
像这样调入名:
obj = {
name:"John",
sayHi:()=>{
console.log("Hi " + this.obj.name);
}
}
obj.sayHi();
没有工作!同样的错误信息:TypeError:无法读取未定义的属性'name' –
btw我的不好,我不得不提到我的脚本是在nodejs中。你的建议可能适用于js –
这只有在你分配给'this.obj'而不是'obj'时才有效。但即使如此,只有在原始上下文中定义了“this”时。此外,这个答案试图通过引入另一个不相关的隐含的'this'上下文来回答关于函数与箭头函数的隐式'this'上下文的问题。 –
为什么“这个,obj.name”不会工作? –
@WaterfrVilla在您的环境中,当在箭头函数表达式中使用时,this'是未定义的。这可能发生在严格模式下。这是一项安全功能。你不应该在箭头函数表达式中使用'this',它们不是为这个用例设计的。 – janos
@WaterfrVilla你需要更多的帮助吗? – janos