JS中 hasOwnProperty 与 in 的对比

in:用来检测当前这个属性是否隶属于对象(不管是对象私有的还是公有的属性,只要有返回的就是true)


hasOwnProperty:用来检测当前这个属性是否是对象的私有属性(不仅要是对象的属性,而且需要是私有的才可以)


var obj={name:'我的兜兜有糖',age:8};
'name' in obj  //=>true
'sex' in obj   //=>false
'hasOwnProperty' in obj //=>true  hasOwnProperty是Object这个内置类中提供的属性方法,
只要当前对象是Object的一个实例,就可以使用这个方法

obj.hasOwnProperty('name') //=>true
obj.hasOwnProperty('hasOwnProperty') //=>false


检测一个属性是否是当前对象的公有属性 

1、是对象的一个属性 

2、不是对象的私有属性


function hasPubProperty(attr,obj){
    return (attr in obj) && (obj.hasOwnProperty(attr)===false);
}
hasPubProperty('hasOwnProperty',{xxx:'xxx'});