首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object.prototype.hasOwnProperty.call()与Object.prototype.hasOwnProperty()

Object.prototype.hasOwnProperty.call()与Object.prototype.hasOwnProperty()
EN

Stack Overflow用户
提问于 2016-05-05 09:25:24
回答 1查看 5.2K关注 0票数 4

在我的JavaScript代码中,我有一个函数,它包含以下一组语句

代码语言:javascript
复制
function someFunc(object,action){
                    for(var property in object){
                        if(Object.prototype.hasOwnProperty.call(object, property)){
                            //TODO
                        }
                    }
                }
}

如果我将If语句替换为

代码语言:javascript
复制
if(obj.hasOwnProperty(property)){
    //TODO
    }

两个人对我都很好。我只想知道其中哪一种方法更好,为什么呢?我知道obj.hasOwnProperty(property)检查对象的个人属性。我也想知道电话是怎么联系起来的

object.prototype.hasOwnProperty.call(object, property)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 09:30:07

我通常都会和obj.hasOwnProperty(prop)一起去。

它的间接方向较少,对于试图阅读和理解您的代码的其他人来说,这将更加清晰。它的运行速度也会稍微快一些,因为您不需要重新绑定this的上下文。

我想不出有多少陷阱需要你使用另一种方法。

  • 如果obj继承自null而不是Object.prototype
  • 如果hasOwnProperty已在obj上重新声明
  • 如果hasOwnPropertyobj的原型链中被重新声明

所有这些场景在日常应用程序中都是非常罕见的,如果您确实找到其中的一种,那么在那里解决问题是最安全、最简单和最好的,而不是使用更防御性的Object.prototype.hasOwnProperty.call表单。

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

https://stackoverflow.com/questions/37046946

复制
相关文章

相似问题

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