search

Home  >  Q&A  >  body text

javascript - MDN中的一个继承多个对象的DEMO问题

function MyClass() {
     SuperClass.call(this);
     OtherSuperClass.call(this);
}

MyClass.prototype = Object.create(SuperClass.prototype); //inherit
mixin(MyClass.prototype, OtherSuperClass.prototype); //mixin

MyClass.prototype.myMethod = function() {
     // do a thing
};

这个代码 mixin不是很懂

迷茫迷茫2837 days ago335

reply all(2)I'll reply

  • 高洛峰

    高洛峰2017-04-10 15:25:47

    Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现。Mixin是掺合,混合,糅合的意思,即可以就任意一个对象的全部或部分属性拷贝到另一个对象上。
    mixin(MyClass.prototype,OtherSuperClass.prot
    otype); 就是将OtherSuperClass的原型拷贝到MyClass的原型上。

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:25:47

    JavaScript是Prototype-based的OOP语言,通常有两大类继承模式:

    伪类模式 Pseudo-Class Mode

    伪类模式利用原型链的特性来重用对象成员。

    混合模式 mixin

    混合模式即是将一个对象的成员直接拷贝到另一个对象上,这种模式并不会涉及原型链。

    二者的区别:

    • 伪类模式是引用原型,而混合模式直接拷贝原型。
    • 混合模式的成员检索速度比伪类模式相对快(原型链的关系),但使用更多内存。

    之前总结过一篇文章: https://github.com/leozdgao/personal-utils/wiki/Inheritance-in-JavaScr...

    reply
    0
  • Cancelreply