ES6新特性 - 判断对象中是否有某个属性

807 阅读1分钟

1. 对象.属性 === undefined

  • 如果对象身上没有某个属性的时候,读取的时候,得到的会是undefined
  • 这种方式有个弊端,就是当对象身上有个属性,其属性值为undefined的时候,就不能使用这种方法了

2. in运算符

  • 语法
    '属性名' in 对象名
    
  • 返回值
    • 布尔值
      • true: 该对象或原型上有这个属性;
      • false:该对象或原型上没有这个属性;
  • 示例展示:

image.png

3. Object.hasOwnProperty()函数

  • 语法
    对象.hasOwnProperty('属性名')
    
  • 返回值
    • 布尔值
      • true:该对象本身中有这个属性(不判断原型上的属性);
      • false:该对象本身中没有这个属性(不判断原型上的属性);
  • 示例展示: image.png

4. in 与 hasOwnPrototype 对比

const obj = {
  a: 1
};

obj.__proto__.b = 2;

console.log(obj);

console.log(obj.hasOwnProperty('a'), 1);
console.log(obj.hasOwnProperty('b'), 2);

console.log('a' in obj, 3);
console.log('b' in obj, 4);

image.png