【发布时间】:2019-08-08 08:13:53
【问题描述】:
在下面的代码中,obj.sayhello() 行表示sayhello 在obj 的上下文/范围内执行。 str 未在sayhello 方法中定义(通过var)。 JS 将在范围内查找变量,即在 obj 中,它显然具有 str 属性。为什么脚本会抛出ReferenceError?
未捕获的
ReferenceError:str未在Object.sayhello中定义
var obj = {
str: "hello",
sayhello: function(){
return str;
}
};
obj.sayhello();
【问题讨论】:
-
str不是变量而是对象属性。您必须使用this访问它——this.str将产生正确的值。 -
强相关:Self-references in object literals / initializers — 这有完全相反的问题,但会导致类似的错误。在那个问题中,使用了
this,但没有使用function;在这里,情况正好相反。我认为这些足够不同,因此不应将其作为重复项关闭。也相关:var vs this in Javascript object.
标签: javascript javascript-objects