我正在开发一个 jQuery 插件,我有一些关于我正在使用的对象的问题。我保证我已经花了大约一个小时在谷歌上搜索,但显然我的搜索词不够具体。这是一个例子:
var rgba = {
red = {
startHex : 'FF',
startDec : parseInt(startHex,16),
endHex : '00',
endDec : parseInt(endHex,16),
diffDec : endDec - startDec
},
green = {
startHex : 'FF',
startDec : parseInt(startHex,16),
endHex : '00',
endDec : parseInt(endHex,16),
diffDec : endDec - startDec
},
blue = {
startHex : 'FF',
startDec : parseInt(startHex,16),
endHex : '00',
endDec : parseInt(endHex,16),
diffDec : endDec - startDec
},
}
现在它会告诉我“parseInt(startHex,16)”中的“startHex”未定义。是否可以从同级属性引用对象内的另一个属性?如果可以,您将如何操作?
我的另一个问题是,由于“rgba”的属性本身都具有相同的属性,我如何使用带有 for 循环的数组来引用其中的每一个?例如,这将不起作用:
var colors = ['red','green','blue'];
for(i in colors) {
alert(rgba.colors[i].diffDec);
}
出于显而易见的原因,因为对于此代码,“rgba”对象应该有一个名为“colors”的属性。我考虑过使用 eval():
var colors = ['red','green','blue'];
for(i in colors) {
alert(rgba.eval(colors[i]).diffDec);
}
但它告诉我 eval() 不是“rgba”的属性。关于如何执行此操作的任何建议(除了在“rgba”下实际创建属性“colors”之外)?
谢谢!
最佳答案
您不能以这种方式访问其他属性。但你能做的是:
function Color(startHex, endHex) {
this.startHex = startHex;
this.endHex = endHex;
this.startDec = parseInt(startHex,16);
this.endDec = parseInt(endHex,16);
this.diffDec = this.endDec - this.startDec;
}
var rgba = {
red : new Color('FF','00'),
green : new Color('FF','00'),
blue : new Color('FF','00')
}
至于你的第二部分,你添加了一个不必要的步骤。只需使用:
for(prop in rgba) {
alert(rgba[prop].diffDec);
}
请记住,对于 javascript,这两个是等价的:
myobject.myproperty
和
myobject["myproperty"]
关于JavaScript 对象,两个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809147/