继承
1,apply/call继承(构造函数继承)
例:
function parent(){
this.money=1;
}
function Child(){
Parent.call(this)//调用Parent构造函数
}
2.原型继承
function Human(){
this.name="teacher";
this,age=39;
}
function Man(){
}
Man.prototype=new Human();
var m=new Man();
/*此时Man.name=teacher;Man.age=39;*/
三,组合继承
使用原型链实现对原型属性与方法继承,使用构造函数,实现对实例方法与属性继承
例
function A(name){
this,name=name;
this.colors=["red"."green"];
}
function g(name){
A.call(this,name);//继承属性
this.color="green";
}
A.prototype.sayName=function(){
alert(this.name);
}
g.prototype=new A();
g.prototype.constructor=A;
var g=new g();
g.colors.push("green");
var A1=new A();
g.sayName();
四,经典继承
(Object.create())
var animal={name:"qw" age:8};
var a=Object.create(animal());
注:此时a.name a.age可访问成功,但a本身并无此类属性,而a原型上有这些属性
六,原型实现继承的优缺点及解决方式
优点:
可以继承构造函数属性,也可继承原型属性
缺点:
1,在创建子类实例化时,不能向超类型的构造函数中传参
2,子类型继承了父类型原型中的所有属性和方法,但对于引用类型属性值所有实例共享,故不能在不改变其他实例情况下改变。
解决方式
使用混合继承。