这是一个用户定义的mixin,用于浅层克隆对象:
function mixin(receiver, supplier) {
Object.keys(supplier).forEach(function(key) {
receiver[key] = supplier[key];
});
return receiver;
}
var supplier = {
a:{b:10}
};
var receiver = mixin({},supplier);
并根据我的理解将一个对象分配给其他对象使它们相等,因为它们引用了相同的对象文字,当一个对象更改其属性时它也反映在另一个对象上但是下面的测试困惑我:
receiver.a === supplier.a //true
receiver.a = {b:20} //but
supplier.a //still {b:10} I expected {b:20}
我在这做错了什么? P.S我知道ES6 Object.assign()但是这个mixin是为了我的理解而创建的。