Node.js 成员函数如何访问成员变量?
在下面的代码片段中,我试图从sayHi(成员函数)访问name(成员变量)。我该怎么做Node.js 成员函数如何访问成员变量?,node.js,Node.js,在下面的代码片段中,我试图从sayHi(成员函数)访问name(成员变量)。我该怎么做 obj = { name:"John", sayHi: ()=>{ console.log("Hi " + name); } } obj.sayHi(); 箭头函数表达式最适合于非方法函数。似乎您希望sayHi使用obj的name属性。 因此,您希望使用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"
关于箭头函数表达式的一个很好的资源就是这个页面。你不必像@janos说的那样使用匿名函数。使用箭头函数时,
此
引用在其中定义对象的类或上下文。因此,您可以通过调用this.obj.name
来调用name,如下所示:
obj = {
name:"John",
sayHi: ()=>{
console.log("Hi " + this.obj.name);
}
}
obj.sayHi();
没用!相同的错误消息:TypeError:无法读取undefinedbtw的属性“name”。我的错误是,我必须提到我的脚本在nodejs中。您的建议可能适用于JS。只有当您指定给
this.obj
而不是obj
时,此选项才有效。但即使如此,只有在原始上下文中定义了此。此外,这个答案试图回答一个关于函数与箭头函数的隐式这个上下文的问题。。。通过引入另一个不相关的隐式此
上下文。@Watervilla在您的环境中此
在箭头函数表达式中使用时是未定义的
。例如,在严格模式下可能会发生这种情况。这是一个安全功能。您不应该在箭头函数表达式中使用此
,它们不是为这个用例设计的。@Watervilla需要更多帮助吗?