Javascript 对象没有hasOwnProperty方法(即它未定义)-IE8
这似乎很奇怪 以下是我在IE8控制台中的实验:Javascript 对象没有hasOwnProperty方法(即它未定义)-IE8,javascript,internet-explorer-8,ie-developer-tools,hasownproperty,Javascript,Internet Explorer 8,Ie Developer Tools,Hasownproperty,这似乎很奇怪 以下是我在IE8控制台中的实验: typeof obj1 // "object" obj1.hasOwnProperty // {...} typeof obj2 // "object" obj2.hasOwnProperty // undefined 关于是什么导致了这种情况,你有什么想法吗?这个例子来自IE8,但同样的结果来自IE6+和大多数其他IE浏览器 IE before#9没有为主机对象定义它 var o=window;// or document or docume
typeof obj1 // "object"
obj1.hasOwnProperty // {...}
typeof obj2 // "object"
obj2.hasOwnProperty // undefined
关于是什么导致了这种情况,你有什么想法吗?这个例子来自IE8,但同样的结果来自IE6+和大多数其他IE浏览器 IE before#9没有为主机对象定义它
var o=window;// or document or document elements
o.hasOwnProperty
/* returned value: (undefined)
undefined
*/
obj2是主机对象吗?您是否处于IE7/IE8/quirks模式?关于本机对象和主机对象之间的差异?:一个不需要使用hasOwnProperty()的解决方法:我遇到了这个问题,因为我想知道对象中是否存在属性,我可以通过以下链接来解决:可能
object.prototype.hasOwnProperty.call(window,name)
?@panzi:非常感谢!这在IE8中是有效的,现在不兼容的浏览器被正确地检测到了我的网站。(以前,会在空白页上崩溃,因为没有window.hasOwnProperty)@panzi:如果你把评论中的信息作为答案,可能会更好。这确实是问题的解决办法。@Oleg这只是猜测(因此“可能”)。它真的有效吗?然后我会写一个答案。@panzi:据我所知,IE8中创建的所有DOM元素/节点在hasOwnProperty
上都有相同的问题,但是可以成功地使用Object.prototype.hasOwnProperty.call(DomeElement,name)
。