gpt4 book ai didi

Javascript mixin 用于属性为对象歧义的对象

转载 作者:行者123 更新时间:2023-12-02 14:03:13 24 4
gpt4 key购买 nike

这是一个用户定义的用于浅层克隆对象的 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);

根据我的理解将一个对象分配给另一个对象使它们相等,因为它们引用相同的对象文字,并且当一个对象更改其属性时它也会反射(reflect)在另一个对象上但下面的测试令人困惑我:

    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 是为了我的理解而创建的。

最佳答案

分配与其他操作不同。由于它的工作原理,它破坏了引用。

基本上,对象位于内存中,并且每个变量都包含一个指向内存位置的指针。因此,当您编辑该对象时,您会更改它的每个引用。

但是如果为变量分配新值,则会将新对象放入内存中的新位置,并将引用指针更改为新位置的指针。

enter image description here

关于Javascript mixin 用于属性为对象歧义的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40247106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com