美文网首页
javascript 对象 hasOwnProperty 方法

javascript 对象 hasOwnProperty 方法

作者: 李湘华 | 来源:发表于2019-03-25 18:28 被阅读0次

    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 方法

          本文链接:https://www.haomeiwen.com/subject/jlwbvqtx.html