针对自身属性来判断
// 利用obj.hasOwnProperty来判断// 这种方法可以规避不可遍历的属性var obj = Object.create({});Object.defineProperty(obj, "foo", { value: "bar" });if(obj.hasOwnProperty('foo')){//存在}else{}//obj.hasOwnProperty只能网络自身属性//无法网络原型上的属性Object.prototype.a = 1if(obj.hasOwnProperty('a')){}else{//不存在}
利用in判断属性(无原型链和遍历属性限定)
// 利用in运算符来判断// 这种方法可以判断自身或者原型上的属性,利用范围最广,无限制var obj = Object.create({});Object.defineProperty(obj, "foo", { value: "bar" });if('foo' in obj){//存在}else{}Object.prototype.a = 1if('a' in obj){//存在}else{}