JavaScript使用复杂引用初始化对象
我想初始化this.screens变量,但在初始化y时,我不能引用x。有人能告诉我,如何引用this.screens.x吗?JavaScript使用复杂引用初始化对象,javascript,object,Javascript,Object,我想初始化this.screens变量,但在初始化y时,我不能引用x。有人能告诉我,如何引用this.screens.x吗? 非常感谢。你不能。您必须分两步进行: var ok = { makeScreens: function () { this.screens = { x: 2, y: this.x * 10; }; } } 您可以做的另一件事是使用构造函数: var ok = { makeScreens: function () {
非常感谢。你不能。您必须分两步进行:
var ok = {
makeScreens: function () {
this.screens = {
x: 2,
y: this.x * 10;
};
}
}
您可以做的另一件事是使用构造函数:
var ok = {
makeScreens: function () {
this.screens = {
x: 2
};
this.screens.y = this.screens.x * 10;
}
}
你试过了吗?x是未定义的,IIFE返回未定义的,所以new也会失败。我的错。你说得对,我没试过。修正了x,虽然我有点惊讶x没有定义。不得不谷歌生活。这算是一种生活吗?调用发生在匿名函数parens之外,我认为是在
new
之后。立即调用的函数表达式(IIFE)将在不设置此值的情况下被调用,因此它将默认为全局对象。所以这个.x实际上是浏览器中的window.x。顺便说一下,不是我的反对票。@Bergi,谢谢你。我不知道是这样的。这个屏幕不是一个变量。这是在非严格模式下始终引用对象的执行上下文的参数。因此,this.screens是对对象属性的引用。或者var x=2;this.screens={x:x,y:x*10}代码>;-)
var ok = {
makeScreens: function() {
this.screens = new (function(){
this.x = 2;
this.y = this.x * 10;
})();
}
}