木灵鱼儿

木灵鱼儿

阅读:310

最后更新:2021/05/20/ 18:16:29

做个笔记 判断对象中是否存在某个属性

本来是一个很简单的需求:

const a = {
  b:1
}

本来我的需求是判断,这个a对象里面b是否存在,但是b的值不确定,他可能是布尔值false,也可能是数字0,或者是空字符。

那么if(a.b)就不太行了,一般来说,老前端一般都是用in 操作符。

"b" in a;  //true

但是es6后,一般来说,不建议这样使用的,同时不建议的还有delete操作符。

于是问了下群友,因为我记得es6有那么一个方法,可以判断一个对象的属性是否存在,并且不会去查prototype上的内容。但是我忘了啥名字来着!

const a = {
  b:1
}

a.hasOwnProperty("b"); //true

到这,基本上就行了,函数式操作判断,新的特性,完美达到我的要求!

但是,群友的又开始骚操作了

const a = {
  hasOwnProperty: () => '傻了吧',
}

a.hasOwnProperty("b"); //"傻了吧"

好家伙,直接就给覆盖了继承的hasOwnProperty方法,这我就很尴尬了。

最后迫于无奈,为了准确性,我们还得这么写:

Object.prototype.hasOwnProperty.call(target,key);

但是我call基本没怎么用过,是个短板,这个可能也记不住,记个笔记!

版权申明

本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

关于作者

站点职位 博主
获得点赞 0
文章被阅读 310

相关文章

目录树