对象没有 hasOwnProperty 方法(即未定义)- IE8

IT技术 javascript internet-explorer-8 ie-developer-tools hasownproperty
2021-02-23 04:19:02

这看起来很奇怪。

这是我在 IE8 控制台中的实验:

typeof obj1 // "object"
obj1.hasOwnProperty // {...}

typeof obj2 // "object"
obj2.hasOwnProperty // undefined

关于什么可能导致这种情况的任何想法?

1个回答

这个例子来自 IE8,但同样的返回来自 IE6+ 和大多数其他 IE 浏览器。

#9 之前的 IE 没有为宿主对象定义它

var o=window;// or document or document elements
o.hasOwnProperty

/*  returned value: (undefined)
undefined
*/
@panzi:据我所知,在 IE8 中创建的所有 DOM 元素/节点都存在与 相同的问题hasOwnProperty,但可以成功使用 Object.prototype.hasOwnProperty.call(domElement,name).
2021-04-22 04:19:02
@panzi:非常感谢!这在 IE8 中有效,现在我的网站正确检测到不兼容的浏览器。(之前,会在空白页上崩溃,因为没有 window.hasOwnProperty)
2021-04-27 04:19:02
@Oleg 这只是猜测(因此是“可能”)。它真的有效吗?那我来写个答案。
2021-05-03 04:19:02
也许Object.prototype.hasOwnProperty.call(window,name)
2021-05-07 04:19:02
@panzi:如果您将评论中的信息作为答案发布可能会更好。这真的是解决问题的方法。
2021-05-14 04:19:02