JavaScript 如何判断对象是否包含某属性? 下面本篇就来给大家介绍几种使用 JavaScript 判断对象是否包含有某属性的常见方法, 希望对大家有所帮助.
一, 使用 "!=="
"!==" 方法在工作中很常见, 可以看出该方法可以判断继承来的属性.
- let obj = {
- x: 1
- };
- obj.x !== undefined; // true 有 x 属性
- obj.y !== undefined; // false 无 y 属性
- obj.toString !== undefined; // true 从 Object 继承 toString 属性
二, in 运算符
MDN 上有对 in 运算符的介绍: 如果指定的属性在指定的对象或其原型链中, 则 in 运算符返回 true.
- let obj = {
- x: 1
- };
- 'x' in obj; // true
- 'y' in obj; // false
- 'toString' in obj; // true
in 运算符语法很简单, 效果跟 undefined 是相同的, 与 undefined 不同的是, in 可以区分存在但值为 undefined 的属性. 话不多说, 看代码:
- let obj = {
- x: undefined
- };
- obj.x !== undefined; // false
- 'x' in obj; // true
可以看出如果属性的值为 undefined 的时候, 使用!== 的方法就不奏效了, 所以在工作中需要注意一下这一块.
三, hasOwnProperty()
hasOwnProperty()用来判断某个对象是否含有指定的属性, 返回布尔值, 当检测属性为自有属性 (非继承) 的时候返回 true.
- test.hasOwnProperty('name') //true 自身属性
- test.hasOwnProperty('age') //false 不存在
- test.hasOwnProperty('toString') //false 原型链上属性
可以看到, 只有自身存在该属性时, 才会返回 true. 适用于只判断自身属性的场景
来源: http://www.css88.com/qa/javascript/11302.html