对象没有 hasOwnProperty 方法(即未定义) - IE8
Posted
技术标签:
【中文标题】对象没有 hasOwnProperty 方法(即未定义) - IE8【英文标题】:object has no hasOwnProperty method (i.e. it's undefined) - IE8 【发布时间】:2011-12-30 18:11:18 【问题描述】:这看起来很奇怪。
这是我在 IE8 控制台中的实验:
typeof obj1 // "object"
obj1.hasOwnProperty // ...
typeof obj2 // "object"
obj2.hasOwnProperty // undefined
关于什么可能导致这种情况的任何想法?
【问题讨论】:
obj2 是宿主对象吗?你在 IE7/ IE8 / quirks 模式下吗? 关于difference between native objects and host objects?
:***.com/questions/7614317/…
相关***.com/questions/135448/…
一种不需要使用 hasOwnProperty() 的解决方法:hasOwnProperty() is undefined on the window object in IE8 and causes a TypeError
我遇到了这个问题,因为我想知道对象中是否存在属性,我可以通过这个链接解决:***.com/questions/11040472/…
【参考方案1】:
此示例来自 IE8,但来自 IE6+ 和大多数其他 IE 浏览器的返回相同。
#9 之前的 IE 没有为 host 对象定义它
var o=window;// or document or document elements
o.hasOwnProperty
/* returned value: (undefined)
undefined
*/
【讨论】:
可能是Object.prototype.hasOwnProperty.call(window,name)
?
@panzi:非常感谢!这在 IE8 中有效,现在我的网站可以正确检测到不兼容的浏览器。 (之前,会在空白页上崩溃,因为没有 window.hasOwnProperty)
@panzi:如果您将评论中的信息作为答案发布可能会更好。这确实是问题的解决方案。
@Oleg 这只是猜测(因此是“也许”)。它真的有效吗?然后我会写一个答案。
@panzi:据我所知,在 IE8 中创建的所有 DOM 元素/节点都存在与 hasOwnProperty
相同的问题,但可以成功使用 Object.prototype.hasOwnProperty.call(domElement,name)
。以上是关于对象没有 hasOwnProperty 方法(即未定义) - IE8的主要内容,如果未能解决你的问题,请参考以下文章
jsObject.prototype.hasOwnProperty()
Object的几个方法(defineProperty,hasOwnProperty...)