1.组合继承####
使用原型链继承超类的函数,利用构造函数继承超类的属性。
function Super(name){
this.name=name,
this.colors = ['yellow','blue','green'],
}
Super.prototype.sayName = function(){
alert(this.name);
}
function Sub(name,age){
Super.call(this,'Json');
}
Sub.prototype = new Super();
Sub.prototype.constructor = Sub;
2.原型式继承
function object(o){
function F(){}
F.prototype = o;
return new F();
}
可以使用ECMAScript5的Object.create()(第一个参数传用作新对象原型的对象,第二个传新对象的额外属性)
3.寄生式继承(即创建一个封装继承过程的函数)
function createOther(o){
var clone = Object.create(o);
clone.sayName = function () {
alert('hello');
}
return clone
}
4.寄生式组合继承(避免组合继承两次调用超类构造函数的性能问题,避免在原型上添加不必要的属性和方法)
function inherit(Sub,Super){
var pro = Object.create(Super.prototype);
pro.constructor = Sub;
Sub.prototype = pro;
}
function Super(name){
this.name=name,
this.colors = ['yellow','blue','green'],
}
Super.prototype.sayName = function(){
alert(this.name);
}
function Sub(name,age){
Super.call(this,'Json');
}
inherit(Sub,Super);
网友评论