如何确定原生JavaScript对象是否具有属性/方法?
- 论坛
- 如何确定原生JavaScript对象是否具有属性/方法?
12 浏览
如何确定原生JavaScript对象是否具有属性/方法?
我以为这会很简单:
if(typeof(Array.push) == 'undefined'){ //未定义,原型化一个push方法的版本 // Firefox从不执行这里,但IE/Safari/Chrome等会执行,即使 // Array对象有一个push方法! }
在Firefox中确实可以正常工作,但在IE,Chrome,Safari,Opera中不行,它们使用这个测试返回原生Array对象的所有属性/方法为'undefined'。
.hasOwnProperty(prop)方法只适用于实例...所以它不起作用,但通过试错我发现这个方法可以工作。
//这在Firefox/IE(6,7,8)/Chrome/Safari/Opera中有效 if(typeof(Array().push) == 'undefined'){ //未定义,原型化一个push方法的版本 }
使用这种语法来确定原生对象/ ~"JavaScript类"~上是否存在属性/方法有什么问题,或者有更好的方法吗?