taquaki-satwo
11/27/2017 - 3:15 PM

Mixin

JS-Mixin

function mixin(target, source) {
  const keys = Object.keys(source);
  for(let i=0; i<keys.length; i++) {
    const descriptor = Object.getOwnPropertyDescriptor(source, keys[i]);
    Object.defineProperty(target, keys[i], descriptor);
  }
  return target;
}

const obj1 = {a:1, b:2};
const obj2 = {b:3, c:4};
const obj = mixin(obj1, obj2);
console.log(obj);

const person1 = {
  _name: 'Tom',
  get name() {
    return this._name;
  }
};

const person2 = {};
mixin(person2, person1);
person2.name = 'Huck';
console.log(person2.name);
console.log(person2);