【发布时间】:2017-11-30 12:18:35
【问题描述】:
我不小心在 setter、getter 方法中遗漏了这个关键字。它会导致一些奇怪的错误:(用 Chrome、Firefox 测试)
案例 1:
let user = {
name: "John",
set fullName(value) {
name = value;
},
get fullName() {
return name;
}
};
user.fullName // ""
user.fullName = "Batman"
user.fullName // "Batman"
user.name // "John"
为什么属性 name 仍然是“John”? “蝙蝠侠”从何而来?
案例2:更改上述代码的变量名,出现问题:
let user = {
anythingButName: "John",
set fullName(value) {
anythingButName = value;
},
get fullName() {
return anythingButName;
}
user.fullName // anythingButName is not defined at Object.get fullName [as fullName]...
};
除了name这个词之外,上面代码中的变量不能使用任何名称。不知道为什么?
【问题讨论】:
-
console.log(window.name);
标签: javascript getter-setter this-keyword