在 JavaScript 中,我们可以使用对象字面量语法快速创建一个对象。常常会遇到这样的需求:在对象声明时,需要使用到该对象的其他属性。那么,JavaScript 对象声明中是否允许引用其他属性呢?
答案是不行。
具体来说,如果你试图在对象声明中引用该对象已有的其他属性,会发生一个 ReferenceError
。举个例子:
const obj = { prop1: 1, prop2: prop1 + 1 // ReferenceError: prop1 is not defined }
在上述代码中,我们正在尝试在 obj
的声明中引用其属性 prop1
,但是由于此时 prop1
还没有被声明,所以会报错。
不过,我们仍然可以通过一些方法实现类似的效果。比如,在对象声明后,我们可以为其添加新的属性,这些属性可以引用该对象原先已有的属性:
const obj = { prop1: 1 }; obj.prop2 = obj.prop1 + 1; console.log(obj.prop2); // 2
还有一种方式是使用对象方法来获取对应的属性值,比如:
const obj = { prop1: 1, get prop2() { return this.prop1 + 1; } }; console.log(obj.prop2); // 2
在上述代码中,我们为对象 obj
定义了一个 getter 方法 prop2
,当我们访问 obj.prop2
时,实际上是调用了该方法来获取属性值。在方法内部,我们可以通过 this
关键字来引用对象自身的其他属性。
总结一下,JavaScript 对象声明中不允许引用其他属性,但是我们可以通过添加新属性或使用对象方法来达到类似的效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/28658