Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript使用复杂引用初始化对象_Javascript_Object - Fatal编程技术网

JavaScript使用复杂引用初始化对象

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 () {

我想初始化this.screens变量,但在初始化y时,我不能引用x。有人能告诉我,如何引用this.screens.x吗?
非常感谢。

你不能。您必须分两步进行:

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;
    })();
  }
}