Mixin
译为 “混入” “混合”
早期这个概念经常用于两个对象的拷贝、合并
let a = {
name: 'a'
}
let b = {
age:19,
// name : 'b' 会覆盖a的name
}
let obj = {
...a, ...b };
实现
// 拷贝属性
// target为子类 source为继承类
function copyProperties(target, source) {
for (let key of Reflect.ownKeys(source)) {
// name,constructor,prototype之外属性就是实例属性
if ( key !== 'constructor'&& key !== 'prototype' && key !== 'name'){
// 返回某个对象属性的描述对象( descriptor )。 参数(对象, 属性)
let desc = Object.getOwnPropertyDescriptor(source, key);
Object.defineProperty(target, key, desc);
}
}
}
// 把传入的类混合成一个类并返回
function