1. 程式人生 > >判斷對象是否有某個屬性

判斷對象是否有某個屬性

rop 通過 原因 blog pro js對象 結構 區別 href

/*下面是一個對比,看看在判斷是否包括一個鍵上面,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"] }

摘自博客

判斷對象是否有某個屬性