继承
1.确定原型与实例的关系
a instacheof Object //true
2.借用构造函数继承
function SuperType(){
...
}
function SubType() {
SuperType.call(this,a,b,c...);
//在继承的类的构造函数中调用超类的构造方法,得到相同的实例属性
}
3.组合继承
function SuperType(){
...
}
function SubType(age) {
SuperType.call(this,a,b,c...);
ths.age = age
}
4.原型式继承
function object(o){
function F(){}
F.prototype = o;
return new F();
}
var person = {
name : 'Tom',
}
var a = object(person)
//ES5 var a = Object.create(person,{
name: 'Petter',
})
5.寄生式继承
function createAnother(o){
var o1 == object(o);
o1.sayHi = function(){
alert(' h i')
}
return o1;
}
//寄生式继承是对原型式继承的一种增强
6.组合寄生
function SubType(age){
SuperType.call(this,a,b,c)
this.age = age;
}
function inheritPrototype(subType,superType){
var p = object(superType.prototype) //创建一份原型对象的副本
p.constructor = SubType;
SubType.prototype = p;
//这样SubType()就指向了超类的一个副本,好处是只需要调用一次构造函数,无需创建额外的对象
}
网友评论