2017-04-07 65 views
1

說我有對象testObject = {a: undefined}。如果我然後console.log(testObject.a),我得到undefined。但是,如果我不存在,也會發生同樣的情況。 JavaScript中有什麼方法可以區分ab嗎?我主要是出於好奇而問,我沒有用例。有什麼辦法可以區分未設置的屬性和設置爲未定義的屬性?

+1

剛剛找到一個可能的答案 - 使用'Object.keys(testObject)'。 – Aerovistae

+0

我認爲你正在尋找'undefined'和'null' – JustARandomProgrammer

+0

不,我不是。我不知道會給你什麼印象。我對JavaScript並不陌生。 – Aerovistae

回答

3

hasOwnProperty()方法返回一個布爾值,指示對象是否有指定的屬性爲自己(不繼承)屬性檢驗之前實際區別。

在特定情況下 -

testObject = {a: undefined}; 

    testObject.hasOwnProperty('a') //true 
    testObject.hasOwnProperty('b') //false 
+0

只是一個指針。你應該試着解釋你爲什麼會做出改變。只是說'嘗試這個',不是一個好的答案 – Rajesh

3

可以有額外的條件使用in操作

if(a in testObject) { 
    //yes .. now check whether it is undefined or not 
} 
+0

'in'也將通過原型上的屬性,並將失敗的非枚舉屬性 – Rajesh

2
testObject.hasOwnProperty('a') 

注意,像你展示這隻會爲對象的工作;從原型繼承的屬性將不會通過此測試(這是hasOwnProperty的要點)。

相關問題