和Object相关的几个方法

Object.assign()

用法:Object.assign(tarObj,obj1,obj2,…)

作用:将一个或者多个源对象的可枚举属性复制给目标对象

var obj1 = {
    
    
    a: [1],
    b: 2
};
var obj2 = {
    
    
    c: 3,
    d: 4
};

var tarObj = {
    
    };

Object.assign(tarObj, obj1, obj2);

obj1.a.push(2); //对目标对象有影响

console.log(tarObj); //{a:[1,2],b:2,c:3,d:4}
console.log(obj1); //{a:[1,2],b:2}
console.log(obj2); //{c:3,d:4}

//可枚举属性指的是能通过遍历(for in)能取到的一些属性

Object.create()

 var obj1 = {
    
    
             a: 1
         };
var obj2 = Object.create(obj1); //返回一个空对象,其__proto__指向了obj1
console.log(obj2);  //obj2.__proto__ == obj1 */

Object.defineProperty()

作用:设置一个对象的属性,并且让这个属性变得可配置(是否可写,是否可遍历,是否可删除)

var obj3 = {
    
    };
 //给obj3添加一个属性e,值为5
 Object.defineProperty(obj3, "e", {
    
    
     value: 5, //添加属性值
     enumerable: false, //是否可枚举
     writable: false, //是否可写
     configurable: true //是否可删
 });

hasOwnProperty()

作用:判断一个属性是实例属性还是原型对象上的属性

function Person(age) {
    
    
     this.age = age;
 }
 Person.prototype.a = 11;
 
 var person = new Person(20);

 console.log(person.hasOwnProperty("a")); //false
 console.log(person.hasOwnProperty("age")); //true

isPrototypeof()

作用:判断一个实例对象是否在另一个对象的原型链上
用法:

function Person(age) {
    
    
    this.age = age;
}
var person = new Person(20);
console.log(Person.prototype.isPrototypeOf(person); //true
console.log(Object.prototype.isPrototypeOf(person)); //true

猜你喜欢

转载自blog.csdn.net/qq_38053677/article/details/108098880