【问题标题】:Passing param directly works, passing it within a object or array does not work直接传递参数有效,在对象或数组中传递它不起作用
【发布时间】:2013-03-24 03:26:12
【问题描述】:

我有一个看起来像这样的函数

function myFunction(param)
{
    param.on('mouseover', function(){/*Do something*/});
}

var polygon = new Kinetic.Polygon({
    //My settings
});
myFunction(polygon);

这绝对没问题。但是当我在这样的数组或对象中传递多边形时,我得到了错误。

function myFunction(param)
{
    for(var elem in param)
    {
        elem.on('mouseover', function(){/*Do something*/});
    }
}

var polygon = new Kinetic.Polygon({
    //My settings
});
myFunction([polygon]);

错误是(在控制台中):

Uncaught TypeError: Object 0 has no method 'on'

我做错了什么?

【问题讨论】:

    标签: javascript kineticjs


    【解决方案1】:

    Javascript 的for ... in 循环的工作方式与您想象的略有不同。语句产生的值实际上是被迭代的对象的属性,在 Array 对象的情况下是数组索引。

    以下应该可以工作:

    function myFunction(array)
    {
        for(var key in array)
        {
            elem = array[key]
            elem.on('mouseover', function(){/*Do something*/});
        }
    }
    

    更多示例请参见http://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      相关资源
      最近更新 更多