我有一个看起来像这样的功能
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'
我做错了什么?
答案 0 :(得分: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/。