Javascript 为什么选择mixin而不是原型继承

Javascript 为什么选择mixin而不是原型继承,javascript,Javascript,我正在阅读关于观察者的一章,下面是实现主体实体接口的代码: 然后是生成mixin的扩展函数: function extend( extension, obj ){ for ( var key in extension ){ obj[key] = extension[key]; } } 下面的代码创建了一个具体的主题作为复选框: var controlCheckbox = document.getElementById( "mainCheckbox" ); // Extend

我正在阅读关于观察者的一章,下面是实现主体实体接口的代码:

然后是生成mixin的扩展函数:

function extend( extension, obj ){
  for ( var key in extension ){
    obj[key] = extension[key];
  }
}
下面的代码创建了一个具体的主题作为复选框:

var controlCheckbox = document.getElementById( "mainCheckbox" );

// Extend the controlling checkbox with the Subject class
extend( new Subject(), controlCheckbox );
我这里的问题是为什么controlCheckbox被混入而不是从Subject类继承

我这里的问题是为什么controlCheckbox被混入而不是从Subject类继承

因为controlCheckBox是的一个实例,我们不能也不想从任意类继承它

将接口主题混合到DOM元素甚至DOM类中,最好创建一个包装器对象new Subjectdocument.getElementByIdmainCheckbox

我这里的问题是为什么controlCheckbox被混入而不是从Subject类继承

因为controlCheckBox是的一个实例,我们不能也不想从任意类继承它


将接口主题混合到DOM元素甚至DOM类中,创建一个包装器对象new Subjectdocument.getElementByIdmainCheckbox.

可能是一个更好的主意,因为他们只想插入那个特定的复选框?你不能真正更改DOM元素的原型链。不是controlCheckbox被混合到新的主题中,而是相反。controlCheckbox是一个蹩脚的名字,顺便说一句,它获得了与主题相关的行为。因为他们只想插入那个特定的复选框?你不能真正改变DOM元素的原型链。这不是controlCheckbox被混入新的主题,而是相反的方式。controlCheckbox蹩脚的名字,顺便说一句,获得了与主题相关的行为。
var controlCheckbox = document.getElementById( "mainCheckbox" );

// Extend the controlling checkbox with the Subject class
extend( new Subject(), controlCheckbox );