Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 - Fatal编程技术网

Javascript 无法访问对象中的变量

Javascript 无法访问对象中的变量,javascript,Javascript,我想访问对象中的变量,如下所示: var menuSetup = { m : [100,200], height: m[0], // m is not defined } var menuSetup = { m : [100,200], height: this.m[0], // I tried this, still failed } 那么我可以访问对象中的变量吗?很遗憾,您不能这样做。这是因为menuSetup的属性尚未定义。比如说, var menuS

我想访问对象中的变量,如下所示:

var menuSetup = {
    m : [100,200],
    height: m[0], // m is not defined
}


var menuSetup = {
    m : [100,200],
    height: this.m[0], // I tried this, still failed
}

那么我可以访问对象中的变量吗?

很遗憾,您不能这样做。这是因为
menuSetup
的属性尚未定义。比如说,

var menuSetup = {
  m: [100, 200],
  height: menuSetup.m[0]
};
will-through(在chrome中)
TypeError:无法读取未定义的属性“m”
,因为
menuSetup
刚刚未定义(因为它是由
var
声明提升的)

我能想到的唯一两种方法就是

a) 之前将
m
另存为变量。例如:

var m = [100, 200];
var menuSetup = {
  m: m,
  height: m[0]
}
b) 使用方法而不是变量并执行它

var menuSetup = {
  m: [100, 200],
  height: function() { return this.m[0]; }
}
然后,当您获得
menuSetup.height
时,您实际上会执行
menuSetup.height()

您可以尝试以下操作:

var MenuSetup = function() {
    this.m =  [100,200];
    this.height = this.m[0];
}

var menuSetup = new MenuSetup();
console.log(MenuSetup.height);

不是你这样做的。在JavaScript中,创建同一对象时不能引用另一个属性,因为该对象直到最后关闭
}
之后才存在

不过,正如在对类似问题的回答中所解释的,您可以使用构造函数

function MenuSetup() {
    this.m = [100, 200];
    this.height = this.m[0];
}

var menu = new MenuSetup();
console.log(menu.height) //100

你不能,仅此而已。不幸的是,你不能这么做……你可以在对象之外定义一个变量,并在两个地方使用它。你为什么要这么做?这会造成混乱。这里你真正想要的是一个对象,它的方法是
height()
,返回你想要的值。@Casey Falk这只是一个例子我总是被打败大约15秒:pS构造函数不应该以大写字母开始,而实例不应该以小写字母开始,即
var menuSetup=new menuSetup()
?@soktinpk很好,我一直在做手术,但你是对的,这是不同的,值得改变。