我想访问对象中的变量,如下所示:
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
}
那么我可以访问对象中的变量吗?
答案 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