无法访问对象中的变量

时间:2014-07-17 18:44:10

标签: 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
}

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

3 个答案:

答案 0 :(得分:0)

不幸的是,你无法做到这一点。这是因为尚未定义menuSetup的属性。例如,

var menuSetup = {
  m: [100, 200],
  height: menuSetup.m[0]
};

将通过(在chrome中)TypeError: Cannot read property 'm' of undefined,因为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()

答案 1 :(得分:0)

你可以试试这个:

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

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

答案 2 :(得分:0)

不是你做的方式。在JavaScript中,您无法在创建同一个对象时引用其他属性,因为该对象在结束时的结束}之前尚未存在。

但您可以使用构造函数,如this类似问题的答案中所述。

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

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