javascript 对象 hasOwnProperty 方法

hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false

请记住:继承Object 的对象都会继承hasOwnProperty 方法。其定义在Object.prototype上。

请看下面的例子:

let obj1 = {
    name:"tensweets.com"
};
let obj2 = Object.create(null,{
    name: {
        writable:true,
        configurable:true,
        enumerable:true,
        value: "hello"
    },
});
function hasOwnProperty1(obj, prop) {
    return Object.prototype.hasOwnProperty.call(obj, prop);
}

function hasOwnProperty2(obj, prop) {
    return obj.hasOwnProperty(prop);
}

console.log(hasOwnProperty1(obj1,"name"));
//true
console.log(hasOwnProperty1(obj2,"name"));
//true
console.log(hasOwnProperty2(obj1,"name"));
//true
console.log(hasOwnProperty2(obj2,"name"));
//报错

上面代码的报错是因为obj2Object.create()定义,let obj2 = Object.create(null,{})obj2其原型为null,在这个对象及其原型上是没有hasOwnProperty方法,所以会报错。

因此,正确、通用的方法是:

function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}

http://www.tensweets.com/article/5c98a39f362e5434baf63366

你可能感兴趣的:(javascript 对象 hasOwnProperty 方法)