对象中的JavaScript变量赋值

对象中的JavaScript变量赋值,javascript,Javascript,这个代码有什么问题?obj.bVar在这里没有定义,为什么?如何将aVar的值分配给bVar var obj = { aVar: 15, bVar: this.aVar // This is undefined }; console.log(obj.aVar); console.log(obj.bVar); ,在JavaScript中,指的是当前作用域,即函数调用或全局作用域 这里,这个是全局范围,即窗口(如果在函数中执行此操作,则分开) 这里有一个解决方案: var obj

这个代码有什么问题?obj.bVar在这里没有定义,为什么?如何将aVar的值分配给bVar

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

console.log(obj.aVar);
console.log(obj.bVar);
,在JavaScript中,指的是当前作用域,即函数调用或全局作用域

这里,
这个
是全局范围,即
窗口
(如果在函数中执行此操作,则分开)

这里有一个解决方案:

var obj = {
    aVar: 15
};
obj.bVar = obj.aVar;
另一种方法(可能相关,也可能不相关,取决于应用程序的上下文)是使用构造函数:

function Obj(){
   this.aVar = 15;
   this.bVar = this.aVar;
}
var obj = new Obj();
,在JavaScript中,指的是当前作用域,即函数调用或全局作用域

这里,
这个
是全局范围,即
窗口
(如果在函数中执行此操作,则分开)

这里有一个解决方案:

var obj = {
    aVar: 15
};
obj.bVar = obj.aVar;
另一种方法(可能相关,也可能不相关,取决于应用程序的上下文)是使用构造函数:

function Obj(){
   this.aVar = 15;
   this.bVar = this.aVar;
}
var obj = new Obj();

this
的值取决于包含上述代码的函数的调用方式。如果它在全局范围内,
将是
窗口
对象。因此,请执行搜索。
的值取决于包含上述代码的函数的调用方式。如果它在全局范围内,
这个
将是
窗口
对象。在这上面有很多信息,请进行搜索。或者详细说明:
bVar:(function(){return this.aVar;})。call(obj)
@David嗯,这也要求您在设置bvara之前创建obj,因为函数立即被调用,您需要obj存在,在赋值之前你不能这么做。算了吧,我的控制台在耍花招:)无论如何这不是一个好的选择。或者详细的:
bVar:(function(){return this.aVar;})。call(obj)
@David好吧,这也要求你在设置bvara之前创建obj。因为函数被立即调用,你需要obj存在,你不能在分配任务之前这么做。算了吧,我的控制台在耍花招:)无论如何,这不是一个好的选择。