【问题标题】:Execute function inside object [closed]在对象内执行函数[关闭]
【发布时间】:2016-09-15 00:00:35
【问题描述】:

我正在使用对象数组在画布中随机打印项目。每个对象都应该有不同的随机颜色,但是我编写代码的方式每个对象都得到相同的颜色。

var arrayOfObjects = [
    {x: 1, y: 5, r: 10, color: pickColor}, //gets random color
    {x: 2, y: 6, r: 10, color: pickColor}  // should get a different color
    //and so on...
];

我尝试将pickColor 变量替换为要在每个对象内执行的函数,以便它们都获得不同的颜色,但我似乎无法使用此值在我的颜色数组中选择颜色。

这显然行不通:

{x: 1, y: 5, r: 10, color: colorList[parseInt(Math.random() * colorList.length)]},

编辑:此代码有效,问题来自一个明显不相关的行,调试工具中没有任何提示。 谢谢你的回答

【问题讨论】:

  • 实际上应该可以。为什么你认为它没有?
  • color: pickMeAColor() 这样的解决方案会更好,但是,它应该可以工作......
  • 为什么第二段代码不起作用?它对我有用。
  • pickColor 可能是一个函数调用。为什么不?使用color: pickColor()

标签: javascript arrays function object


【解决方案1】:

pickColor 设为函数并多次调用:

var colorList = ["#E57373", "#F06292", "#BA68C8", "#9575CD", "#7986CB", "#64B5F6", "#DCE775", "#AED581", "#81C784", "#FFD54F"];

function pickColor() {
    var randIndex = parseInt(Math.random() * colorList.length);
    return colorList[randIndex];
}

var arrayOfObjects = [
    {x: 1, y: 5, r: 10, color: pickColor()},
    {x: 2, y: 6, r: 10, color: pickColor()},
    //and so on...
];

效果和你的第二个 sn-p 一样,只是你不必为每个对象重复自己。

【讨论】:

  • 感谢您的回答,这种方法更干净。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2014-04-29
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
相关资源
最近更新 更多