判断对象是否有某个属性

Posted 苡米阳光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断对象是否有某个属性相关的知识,希望对你有一定的参考价值。

/*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同。*/
    // 对象的写法
    var myObject = {
        "mm": "m1",
        "height": 1,
        "width": 1
    };
    if(myObject["mm"]){
        console.log(myObject["mm"]); // m1
    } //最开始报错:mm is not defined, 是因为myObject["mm"]写成了myObject[mm], 没有加引号
    if(myObject.width){
        console.log(myObject.width); // 1
    }
    if(myObject.hasOwnProperty(\'height\')){
        console.log(myObject.height); // 1
    }

    /*判断JS对象是否拥有某属性 两种方式,但稍有区别*/
    //1.in运算符
    console.log(\'mm\' in myObject); // true
    console.log(\'toString\' in myObject); // true
    //可看到无论是name,还是原形链上的toString,都能检测到返回true。

    //2.hasOwnProperty 方法
    console.log(myObject.hasOwnProperty(\'mm\')); // true
    console.log(myObject.hasOwnProperty(\'toString\')); // false
    //原型链上继承过来的属性无法通过hasOwnProperty检测到,返回false。

    /*这个时候,它会输出原型的属性
     在很多时候,我们不需要遍历它原型的属性,还有一个原因就是,我们现在用到的对象,
     我们不能保证,其他开发人员,有没有,在它的原型上加一些属性呢?所以呢,我们就
     过滤一下我们对象的属性吧,这个时候就用到了hasOwnProperty方法*/
    Object.prototype.say = "hello"; // 添加到对象Object上面
    for(var i in myObject){
        console.log(myObject[i]); // m1  1  1  hello
    }
    var test = [1,2,3,4];
    Array.prototype.say = "hello"; //添加到数组Array上面
    for(var i in test){
        console.log(test[i]); // 1  2  3  4  hello
    }
    //改进:
    Object.prototype.say = "hello"; // 添加到对象Object上面
    for(var i in myObject){
        if(myObject.hasOwnProperty(i)){
            console.log(myObject[i]); // m1  1  1
        }
    }
    var test = [1,2,3,4];
    Array.prototype.say = "hello"; //添加到数组Array上面
    for(var i in test){
        if(test.hasOwnProperty(i)){
            console.log(test[i]); // 1  2  3  4
        }
    }
    //ES6中 Set的写法
    var set = new Set();
    set.add("width");
    set.add("height");
    if(set.has("width")){
        console.log(set); //Set {"width", "height"}
        console.log([...set]); // ["width", "height"]
    }

摘自博客

以上是关于判断对象是否有某个属性的主要内容,如果未能解决你的问题,请参考以下文章

C#利用反射来判断对象是否包含某个属性的实现方法

C#利用反射来判断对象是否包含某个属性的实现方法

js--------------判断一个对象是否有某个属性-------------劉

判断对象是否有某个属性

js中判断对象数组中是不是有某个属性值

JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性