javascript - MDN中的一个继承多个对象的DEMO问题
迷茫
迷茫 2017-04-10 15:23:47
0
2
336
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不是很懂

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

reply all(2)
小葫芦

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

Ty80

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

伪类模式 Pseudo-Class Mode

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

混合模式 mixin

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

二者的区别:

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

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

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template