我正在阅读此js tutorial,在Def. 5: Class
部分中有一个代码段:
// Generic prototype for all letters.
let letter = {
getNumber() {
return this.number;
}
};
我想知道getNumber
方法如何引用未声明的number
?
答案 0 :(得分:2)
number
不是变量,而是属性。您不必声明属性(实际上,直到class fields proposal进展到[它现在位于Stage 3]之前,您不能声明属性;没有属性声明语法,只是属性初始化语法)。变量是存储在对象外部。¹属性是存储在对象内部。
如果您想知道getNumber
在创建属性之前如何使用该属性,那是因为这就是JavaScript的定义方式:尝试获取不存在的属性的值会导致值{{ 1}},不是错误。
¹“ ...在对象外部。” 至少就您的代码而言。用规范术语来说,变量是词法环境对象中的绑定(与属性非常相似),但这是规范,而不是您可以直接在代码中使用的东西。
答案 1 :(得分:1)
在您的代码中,this.number
是letter.number
(未定义)。而且,这意味着它被评估为undefined
。
var obj = {};
obj.number; // undefined