对象文字中的表达式如何引用同一对象的另一个属性?

问题描述 投票:0回答:1

这段代码有什么问题?

obj.bVar
这里未定义,为什么呢?如何将
aVar
的值分配给
bVar

var obj = {
    aVar: 15,
    bVar: this.aVar // This is undefined
};

console.log(obj.aVar);
console.log(obj.bVar);

javascript this object-literal
1个回答
4
投票

this
,在 JavaScript 中指的是当前作用域,可以是函数调用,也可以是全局作用域。

这里,

this
是全局范围,即
window
(如果您在函数中执行此操作则除外)。

解决方案如下:

var obj = {
    aVar: 15
};
obj.bVar = obj.aVar;

另一种方法(可能相关也可能不相关,具体取决于您的应用程序的上下文)是使用构造函数:

function Obj(){
   this.aVar = 15;
   this.bVar = this.aVar;
}
var obj = new Obj();
© www.soinside.com 2019 - 2024. All rights reserved.