首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么this.hasOwnProperty('window')在chrome中是真的,在IE11中是假的?

为什么this.hasOwnProperty('window')在chrome中是真的,在IE11中是假的?
EN

Stack Overflow用户
提问于 2015-07-22 18:23:38
回答 1查看 486关注 0票数 2

我运行以下代码:

代码语言:javascript
复制
(function () {
    console.log(this,this.hasOwnProperty('window'))
})();

在chrome中,它输出window true。

在IE11中,它输出window false

为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-23 03:38:50

IE完全搞乱了hasOwnProperty方法,因为它很难处理主机对象(主机对象没有hasOwnProperty方法)。

然而,我们可以做的是直接访问Object.prototype,以保证任何hasOwnProperty调用都没有被篡改或覆盖。

代码语言:javascript
复制
var myObject= {
    prop: 'MyName',
    otherProp: null
};

if (Object.prototype.hasOwnProperty.call(toddObject, 'favouriteDrink')) { // true
    // do something if it exists
}

这里的秘诀是使用.call()来更改hasOwnProperty的上下文(就是IE),并确保我们从Object.prototype获得了我们想要的hasOwnProperty。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31560403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档