我正在查看各种程序库,发现 extend() 经常出现,但是 mixin() 也会出现。YUI 拥有混合和扩展。
这两个概念之间有什么区别?我何时会决定使用混合而不是对象扩展?
谢谢, 马特
回答:在IT技术中,extend() 和 mixin() 都用于将一个对象的方法和属性添加到另一个对象中。相比之下,extend() 将所有属性都直接复制到目标对象,而mixin() 则将属性添加到目标对象中,如果属性已经存在,则跳过。通常,当您想要在一个对象中包含另一个对象的所有属性时,使用extend();如果您只想添加一些新属性和方法,则使用mixin()。
instanceof
测试。Ext-JS是其中一种实现方式(它们让您以不同的方式检查是否为混入)。据我所知,jQuery或Underscore不通过将混入设置在原型链中来实现混入(它们只是复制属性)。您的评论暗示jQuery和Underscore可以具有能够正确与instanceof一起使用的混入?请详细说明。 - Ruan Mendesextend
函数也不是这样做的。只有“类库”(例如Ext.define
)才会使用“extend”术语进行原型继承。 - Bergi