JavaScript 对象,两个问题

标签 javascript object attributes reference

我正在开发一个 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/

相关文章:

javascript - 从元素中获取 href 并添加到图像的 src 属性

javascript - 如何使用 CSS 网格制作一个包含 7 项的菱形网格?

javascript - Vue - 检查是否有 :key has already been used in v-for

javascript - 从 url 加载图像并绘制到 HTML5 Canvas

java - 需要帮助将对象传递给其他类(记分牌、bukkit)

javascript - 如何在对象的属性值中引用 'this'?

javascript - 如何在 NodeJs 中修改数组中的 JSON 键名称

java - 为什么自动装箱在这种情况下不能使用泛型?

java - 基于不同类中的属性的 boolean 属性

c# - 从 BaseClass 中的子类获取自定义属性 (C# .NET 4.0)