說我有對象testObject = {a: undefined}
。如果我然後console.log(testObject.a)
,我得到undefined。但是,如果我不存在,也會發生同樣的情況。 JavaScript中有什麼方法可以區分a
和b
嗎?我主要是出於好奇而問,我沒有用例。有什麼辦法可以區分未設置的屬性和設置爲未定義的屬性?
1
A
回答
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
的要點)。
相關問題
- 1. 設置屬性未定義的方法
- 2. 無法設置屬性未定義
- 3. StyleSet屬性錯誤:無法設置未定義的屬性'webkitTransition'
- 4. 可以爲尚未定義的屬性取消設置var嗎?
- 5. 未設置屬性的屬性?
- 6. JavaScript未捕獲TypeError:無法設置未定義的屬性'-1'
- 7. 未捕獲TypeError:無法設置未定義的屬性值'
- 8. 未捕獲TypeError:無法設置未定義的屬性'0'
- 9. 未捕獲TypeError:無法設置未定義的屬性'背景'
- 10. Javascript對象屬性未定義(但屬性設置)
- 11. 未設置模型屬性
- 12. 未設置選擇屬性
- 13. JSF SessionScoped屬性未設置
- 14. 對象屬性未設置
- 15. statusCode屬性未設置AFJSONRequestOperation
- 16. xmlserializer - 可以設置什麼屬性?
- 17. 未捕獲TypeError:無法設置未定義屬性'Width'
- 18. 有什麼辦法來設置一些/所有「子」 - 項目的屬性/屬性?
- 19. 無法設置未定義的webpack.js屬性「固定」
- 20. 未捕獲TypeError不能設置未定義的屬性'top'
- 21. 爲什麼viewcontroller屬性沒有設置?
- 22. ckeditor.js:219 Uncaught TypeError:無法設置未定義的屬性'dir'
- 23. 無法設置未定義的屬性「出口」
- 24. Uncaught TypeError:無法設置未定義的屬性'nodeId'
- 25. Animate jQuery - 無法設置未定義的屬性'Cur'
- 26. 無法在TypeScript中設置未定義的屬性XXX
- 27. TypeError:無法設置未定義的屬性'onkeydown'
- 28. Uncaught TypeError:無法設置未定義的屬性'top'
- 29. AngularJS無法設置未定義的屬性
- 30. 「js Uncaught TypeError:無法設置未定義的屬性'zIndex'
剛剛找到一個可能的答案 - 使用'Object.keys(testObject)'。 – Aerovistae
我認爲你正在尋找'undefined'和'null' – JustARandomProgrammer
不,我不是。我不知道會給你什麼印象。我對JavaScript並不陌生。 – Aerovistae