Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 成员函数如何访问成员变量?_Node.js - Fatal编程技术网

Node.js 成员函数如何访问成员变量?

Node.js 成员函数如何访问成员变量?,node.js,Node.js,在下面的代码片段中,我试图从sayHi(成员函数)访问name(成员变量)。我该怎么做 obj = { name:"John", sayHi: ()=>{ console.log("Hi " + name); } } obj.sayHi(); 箭头函数表达式最适合于非方法函数。似乎您希望sayHi使用obj的name属性。 因此,您希望使用sayHi作为一种方法, 在这种情况下,箭头函数不适用于此目的 如果将箭头函数表达式更改为匿名函数, 然后,

在下面的代码片段中,我试图从sayHi(成员函数)访问name(成员变量)。我该怎么做

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需要更多帮助吗?