Object.prototype.hasOwnProperty()

91 阅读1分钟
作用:
  • 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;
}