【发布时间】:2014-01-07 18:35:00
【问题描述】:
这很好用:
.extend(true, {}, { name: "john doe", age: 20, address: {street:"aaa", number:"bbb"} }, { gender: "M", address: {} })
但是当 address 是一个类时,第二个地址会覆盖第一个而不是合并它们。
function Address(data) {
this.data = data;
}
$.extend(true, {}, { name: "john doe", age: 20, address: new Address({street:"aaa", number:"bbb"}) }, { gender: "M", address: new Address({}) })
这是 jQuery 的错误还是预期行为?如何合并一个类的两个实例?
【问题讨论】:
-
我认为您在使用
$.extend时遇到的任何奇怪之处是由于处理的不是预期的普通对象。它根本不适用于该用例。 -
更不用说......甚至可以“合并”一个类的两个单独实例吗?我想如果你把它分解成你可以的属性,但是这种寒冷会导致奇怪,这取决于属性的构造方式以及它如何影响所述类的其他部分。
-
听起来你需要为你的类编写一个合并函数,这可能就像用普通对象在类中点击
$.extend一样简单。 -
请注意,这里没有任何类,只有构造函数和构造对象。类是 ES6 中可能出现的东西。
-
@FabrícioMatté:即使在 ES6 中,我认为类最终归结为我们都学会喜欢的相同原型模式。
标签: javascript jquery extend object-oriented-analysis