为什么我不推荐你直接使用hasOwnProperty?

简介: 为什么我不推荐你直接使用hasOwnProperty?

假如你去维护一个别人写的代码,有人写了这么一段代码

let a = {
    hasOwnProperty: function() {
        return '你挚爱的强哥';
    }    
};

然后你去用

a.hasOwnProperty('keyName')

来判断a对象是否包含keyName属性

那永远返回的是'你挚爱的强哥'

如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法

({}).hasOwnProperty.call(a, 'keyName'); // false

也可以使用 Object 原型上的 hasOwnProperty 属性

Object.prototype.hasOwnProperty.call(a, 'keyName'); // false


相关文章
|
7月前
|
JavaScript 前端开发 编译器
typeof和instanceof
typeof和instanceof
37 0
|
Web App开发 安全
navigator.mediaDevices是undefined怎么办
navigator.mediaDevices是undefined怎么办
1510 1
|
3月前
|
JavaScript 前端开发
最简单的方式理解typeof、instanceof、hasOwnProperty
本文通过代码示例详细解释了JavaScript中`typeof`、`instanceof`和`hasOwnProperty`三个操作符的用法和区别:`typeof`用于获取数据类型的字符串表示,`instanceof`用于判断对象的类型,`hasOwnProperty`用于判断对象是否具有指定的属性。
37 3
|
3月前
|
Python
魔术方法__getitem__
魔术方法__getitem__
|
6月前
|
JavaScript 前端开发
hasOwnProperty() 方法详解
hasOwnProperty() 方法详解
nodeValue 属性
`nodeValue`属性用于获取节点的值。在元素节点中,它返回`undefined`;在文本节点中,返回文本内容;在属性节点中,返回属性值。例如,代码用于获取元素的第一个子节点的`nodeValue`。
|
7月前
|
JavaScript 前端开发
prototype(原型对象)
原型对象(prototype)是 JavaScript 中一种特殊的对象,它用于实现对象之间的属性和方法共享。在 JavaScript 中,所有的对象都有一个原型(除了全局对象,如 Math、Date 等),当我们试图访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,Jav
32 1
|
7月前
|
前端开发 JavaScript
探索 hasOwnProperty:处理对象属性的关键(上)
探索 hasOwnProperty:处理对象属性的关键(上)
探索 hasOwnProperty:处理对象属性的关键(上)
|
7月前
|
前端开发 JavaScript 安全
探索 hasOwnProperty:处理对象属性的关键(下)
探索 hasOwnProperty:处理对象属性的关键(下)
探索 hasOwnProperty:处理对象属性的关键(下)
|
JavaScript 前端开发
原型链中:为什么Function.proto==Function.prototype?
原型链中:为什么Function.proto==Function.prototype?
135 0

热门文章

最新文章