可枚举属性和不可枚举属性 Object.assign

什么是可枚举属性

可以被 for…in 所遍历出来的属性都算可枚举属性

不可枚举属性
比如说被 Object.defineProperty 所代理的属性 属于不可枚举属性
基本包装类型中的原型属性都属于不可枚举属性

Object.assign(target, …sources)
第一个参数目标对象 , 第二个参数源对象(多选)
可以将所有可枚举属性从一个或多个源对象复制给目标对象, 返回目标对象,目标对象的值也改变

class Person {
    constructor(options = {}) {
        this.name = options.name
        this.age = options.age
    }
    test() {
        console.log('我在原型中吗');
    }
}

class Animal {
    constructor(options = {}) {
        this.name = options.name
        this.age = options.age
    }
}
let obj = new Person({ name: '小明', age: 20 })
console.log(obj); // { name: '小明', age: 20 }
Person.prototype.test(); // 我在原型中吗
let animal = new Animal({ name: '小狗', age: 3 })
let newObj = Object.assign(obj, animal)
console.log(newObj); // { name: '小狗', age: 3 }
newObj.test();  // 我在原型中吗

记录方便以后忘记可以复习

你可能感兴趣的:(可枚举属性,js)