说我有对象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. 可以为尚未定义的属性取消设置var吗?
- 4. 未设置属性的属性?
- 5. JavaScript未捕获TypeError:无法设置未定义的属性'-1'
- 6. 未捕获TypeError:无法设置未定义的属性'背景'
- 7. 未捕获TypeError:无法设置未定义的属性值'
- 8. 无法设置未定义的webpack.js属性“固定”
- 9. 有什么办法来设置一些/所有“子” - 项目的属性/属性?
- 10. 未捕获TypeError不能设置未定义的属性'top'
- 11. Dexie - 类型错误:未定义(...)无法设置属性“的onerror”
- 12. index.html:507 Uncaught TypeError:无法设置未定义的属性'onsubmit'(...)
- 13. Uncaught TypeError:无法设置未定义的属性'todoText'
- 14. 无法设置未定义Extjs4的属性'视图'
- 15. 无法设置未定义的属性'$ render'
- 16. Uncaught TypeError:无法设置属性'nTf'的未定义
- 17. Angularjs控制器:无法设置未定义的属性“查询”
- 18. Uncaught TypeError:无法设置未定义的属性'nodeId'
- 19. 无法在core.js文件中设置未定义的属性'值'
- 20. “js Uncaught TypeError:无法设置未定义的属性'zIndex'
- 21. JSON对象TypeError:无法设置未定义的属性'0'
- 22. 无法在TypeScript中设置未定义的属性XXX
- 23. TileContainer无法设置未定义SAPUI5的属性'className'版本1.48
- 24. ckeditor.js:219 Uncaught TypeError:无法设置未定义的属性'dir'
- 25. Laravel Echo无法设置未定义的属性'X-Socket-ID'
- 26. TypeError:无法设置未定义的属性'0'
- 27. Javascript | Uncaught TypeError:无法设置未定义的属性“颜色”
- 28. TypeError:无法设置未定义的属性'backgroundColor'
- 29. 无法设置未定义的属性'employeeNum'
- 30. 无法设置未定义角度ng-repeat的属性'key'
刚刚找到一个可能的答案 - 使用'Object.keys(testObject)'。 – Aerovistae
我认为你正在寻找'undefined'和'null' – JustARandomProgrammer
不,我不是。我不知道会给你什么印象。我对JavaScript并不陌生。 – Aerovistae