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很好,我一直在做手术,但你是对的,这是不同的,值得改变。