1. in 和 hasOwnProperty
in会检查对象和它的整条原型链,hasOwnProperty只会检查对象本身,不会检查原型链
let a = {name: 'rick'} let b = {} b.__proto__ = a b.hasOwnProperty('name') // fasle 'name' in b // true
2. 用undefined判断
var o={x:1}; o.x!==undefined; //true o.y!==undefined; //false