我在javascript中创建了大量的Image对象,并将它们全部放在一个数组中。但是,其中一些对象具有mouseover()和mouseout()属性,而有些则没有。
有没有办法确定我引用的对象是否定义了这些功能?
我已经尝试了
if (typeof obj.mouseover !== 'undefined')
但如果我从未宣布
mouseover = function() { ... }
在那个对象上,然后代码就在那里破解。
所以我正在寻找一种方法来确定我是否添加了' var mouseover = function(){...}'在每个对象上。
当然,我可以通过并确保每个对象都创建鼠标悬停和鼠标输出,即使没有设置为任何东西,但如果有另一种方法来检测是否设置了这种感觉就像是一种不必要的痛苦首先。
感谢。
答案 0 :(得分:7)
您可以通过Object.hasOwnProperty('someMethodName')
答案 1 :(得分:-1)
使用反射。例如。: Javascript Reflection
然后很容易编写如下函数: DoesMethodExist = function(object_,methodName){...}
迭代遍历object_的所有方法名称,并将它们与methodoName匹配。