【每日一包0029】merge-descriptors

王煒發表於2019-02-16

[github地址:https://github.com/ABCDdouyae…]

merge-descriptors (express原始碼依賴)

一個物件的屬性繼承另一個物件的屬性及其屬性描述符

用法:mixin(繼承者, 被繼承者, 是否繼承者有該屬性的時候繼承【預設true不繼承】)

返回:繼承後的新的物件

const mixin = require(`merge-descriptors`);

let a = {};
Object.defineProperty(a, `name`, {
    value:1,
    configurable: true, 
    enumerable: true, 
    writable: true, 
})
console.log(a);//{name: 1}

let b = {};
let c = mixin(b, a);
console.log(c);//{name: 1}
c.name = 2;
console.log(c, a);//{name: 2} {name: 1}

當第三個引數為false時候,原物件又該屬性則沒有繼承被繼承者的屬性和屬性描述符

let d = {sex: `woman`, job: `IT`};
Object.defineProperties(d, {
    sex: {
        get(){
            return `man`
        }
    }
})

let e = {sex: `123`};
let f = mixin(e, d, false);
console.log(f.sex);//123

相關文章