1、检测对象是否有某个属性(对象自身+原型链) typeof
var a={ x:1, cal:function(z){ return this.x+this.y+z;} }; var b=Object.create(a,{y:{value:3}});
//对象a是对象b的原型对象,且b元素添加自身属性y,属性y的值设为3.
typeof b.x+" "+typeof b.y+" "+typeof b.cal+" "+typeof b.get;
//输出 "number number function undefined"
2、只检测对象本身是否有某个属性(不回溯其原型链) hasOwnProperty()
var a={ x:1, cal:function(z){ return this.x+this.y+z; } }; var b=Object.create(a,{y:{value:3}}); //对象a是对象b的原型对象,且b元素添加自身属性y,属性y的值设为3. b.hasOwnProperty('cal')+" "+b.hasOwnProperty('x')+" "+b.hasOwnProperty('y')+b.hasOwnProperty('z'); //输出 false false true false