检查某对象是否有某属性
in
操作符和Object.hasOwnProperty
方法来进行这样的检查。
虽然上面的代码运行得很好,但你需要注意到,JavaScript提供了两种更精确的方式来判断一个对象是否拥有某个属性。
in
操作符
in
key3
属性是从obj
的原型链中继承过来的,in
操作符也会返回true
。
使用 Object.hasOwnProperty
方法
与in
操作符不同,Object.hasOwnProperty
方法不会检查原型链,它仅仅检查对象自身的属性。
使用 Object.prototype.hasOwnProperty.call
当对象可能没有从 Object.prototype
继承的 hasOwnProperty
方法(例如 Object.create(null)
),或者有可能被覆盖 hasOwnProperty
方法的时候,你可以使用 Object.prototype.hasOwnProperty.call
Object.prototype
继承或者覆盖了 hasOwnProperty