2016-05-13 49 views
0

我想知道爲什麼當我調用下面的函數的結果是「否」,因爲屬性c應該存在。有誰知道爲什麼?謝謝!!!hasOwnProperty -wont顯示屬性,即使它具有屬性

var letters = function() { 
    this.a = 5; 
    this.b = 20; 
    }; 

    letters.prototype = { 
    c: 10 
    }; 

    var letters = new letters(); 

function looping(obj){ 
if (obj.hasOwnProperty(this.c)) { 
console.log("ua"); 
} 
else { 
    console.log("no"); 
} 
} 

looping(letters);

回答

0

hasOwnProperty的參數應該是一個字符串。

console.log(obj.hasOwnProperty("c") ? "UA" : "no") 

此外,hasOwnProperty的全部內容是證明屬性/不是從原型獲得的,所以測試應該失敗。

+0

我想要做的是:函數循環(obj){0} {0} {0} {0}變量屬性= [];如果(!obj.hasOwnProperty(「c」)){ \t properties.push(key); } 返回屬性; } //所以只有將它推到屬性數組,如果它不是c屬性 - 因此推送ll屬性,但那個特定屬性,那是我嘗試用hasOwnProperty – learningcoding

+0

@learningcoding哈哈測試?什麼是「鑰匙」? –

+0

對不起,我錯過了包含循環\t //(var key in obj) – learningcoding

2

「有自己的財產」c雖然。 c是其原型的一部分,因此它不是您正在測試的對象的屬性。

至少,如果您打算按照您的意願調用obj.hasOwnProperty('c'),那麼答案就是這樣。你實際打電話的是obj.hasOwnProperty(window.c),這是obj.hasOwnProperty(undefined),顯然是false