作用:
- Object.prototype.hasOwnProperty() 方法用于判断是否是指定对象的自有属性或方法
语法:
- obj.hasOwnproperty(prop);
- prop:为需要检测的属性或者方法的字符串名称
- 返回值:为一个布尔值表示是否是对象的自有属性或方法
特点:
- 该方法也可以用于是否是对象的自有属性或方法
例1:检测属性是否是对象的自有属性
var obj={
a:1,
b:function(){return 2},
[symbol.for('c')]:3
};
Object.defineProperty(obj,'e',{
value:4,
writeable: false,
enumerable: false,
configurable: false
});
obj.hasOwnProperty('a'); //true
obj.hasOwnPerperty(Symbol.for('c')); //true
例2:在深拷贝当中判断是否是当前对象的自有属性
function deepCopy(source){
if(typeof(source) !== Object || typeof(source) == null){
return source;
}
let target = Array.isArray(source)?[]:{};
for(let key in source){
if(Object.prototype.hasProperty.call(source,key)){
target[key] = deepCopy(source[key]);
}else{
target[key] = source[key];
}
}
return target;
}