为什么方法调用在对象的执行范围内给obj的属性带来引用错误

时间:2019-08-08 08:13:53

标签: javascript

在以下代码中,此行obj.sayhello()表示sayhello()obj的上下文/范围内执行。在str 方法中未定义 sayhello()(通过var),JS将在范围内即obj中查找变量,该变量显然具有{ {1}}属性,然后为什么脚本给出一个str

reference error

Uncaught ReferenceError: str is not defined at Object.sayhello

谢谢。

2 个答案:

答案 0 :(得分:1)

由于您在obj范围内,因此应返回this.str

str本身在其普通定义中不是变量,而是对象的属性。因此,您不能简单地访问str,而必须访问something.str。如果在对象外部,则为obj.str,如果在对象内部-this.str

答案 1 :(得分:0)

要引用同一对象,您需要使用thisreturn str; => return this.str;

var obj = {
    str: 'hello',
    sayhello: function (){ return this.str; } // <==
}

obj.sayhello()