in

作用

如果指定的属性在指定的对象或其原型链中,则in 运算符返回true

  1. const car = { make: 'Honda', model: 'Accord', year: 1998 };
  2. console.log('make' in car); // true
  3. delete car.make;
  4. console.log(car) // false

hasOwnProperty

作用

  1. hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键);
  2. 简单的说,就是检查对象自身(不包括原型链)上是否有某个属性,
    1. function Car() {}
    2. Car.prototype.branch = 'Benz'
    3. var b = new Car()
    4. b.price = '40+'
    5. b.hasOwnProperty('price') // true
    6. b.hasOwnProperty('name') // false

总结

  1. 两者结合使用的话,就可以判断某个 key 在这个对象上是否存在,或者进一步,是在对象上,还是原型链上。