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

let a = {
    hasOwnProperty: function() {
        return 'helloword';
    }    
};

然后你去用

a.hasOwnProperty('keyName')

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

那永远返回的是'helloword'
如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法

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

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

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

标签: none

添加新评论