在以下代码中,此行obj.sayhello()
表示sayhello()
在obj
的上下文/范围内执行。在str
方法中未定义 sayhello()
(通过var),JS将在范围内即obj
中查找变量,该变量显然具有{ {1}}属性,然后为什么脚本给出一个str
reference error
Uncaught ReferenceError: str is not defined at Object.sayhello
谢谢。
答案 0 :(得分:1)
由于您在obj范围内,因此应返回this.str
。
str
本身在其普通定义中不是变量,而是对象的属性。因此,您不能简单地访问str
,而必须访问something.str
。如果在对象外部,则为obj.str
,如果在对象内部-this.str
。
答案 1 :(得分:0)
要引用同一对象,您需要使用this
,return str;
=> return this.str;
var obj = {
str: 'hello',
sayhello: function (){ return this.str; } // <==
}
obj.sayhello()