in
作用
如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。
const car = { make: 'Honda', model: 'Accord', year: 1998 };console.log('make' in car); // truedelete car.make;console.log(car) // false
hasOwnProperty
作用
- hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键);
- 简单的说,就是检查对象自身(不包括原型链)上是否有某个属性,
function Car() {}Car.prototype.branch = 'Benz'var b = new Car()b.price = '40+'b.hasOwnProperty('price') // trueb.hasOwnProperty('name') // false
总结
- 两者结合使用的话,就可以判断某个 key 在这个对象上是否存在,或者进一步,是在对象上,还是原型链上。
