lov*_*esh 3 javascript multiple-inheritance
我知道如何在javascript中继承,但我只能继承一个对象.例如.
function fun1() {
this.var1=10;
this.meth1=function() {
...
...
};
}
function fun2() {
this.var2=20;
this.meth2=function() {
...
...
};
}
function fun3() {
this.var3=30;
this.meth3=function() {
...
...
};
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我想要一个fun3对象继承fun1对象我可以做到这一点
fun3.prototype=new fun1();
Run Code Online (Sandbox Code Playgroud)
或者继承fun2对象我可以做到这一点
fun3.prototype=new fun2();
Run Code Online (Sandbox Code Playgroud)
但我怎么能继承fun1和fun2?
从技术上讲,JavaScript不提供多重继承.每个对象都有一个明确定义的单个"原型"对象,因此是一个"原型链".
但是,可以使用其他方法扩充任何对象,即所谓的"expandos".因此,您可以迭代一组方法,并将它们单独添加到新创建的对象中.这样的集合被称为"mixin".
一些框架提供mixins,例如:
它们的工作方式基本相同.
但请注意,这不是真正的继承,因为对mixin的更改不会反映在对象中.
例如:
var mixin = {
method: function () {
console.log('Hello world!');
}
};
var foo = new fun1();
foo.method = mixin.method;
foo.method(); // Hello world!
mixin.method = function () { console.log('I changed!') };
foo.method(); // Hello world!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2389 次 |
| 最近记录: |