2、借助构造函数
-
改变this指向
-
传参列表不一样(apply需传一个arguments)
3、共享原型
//共享原型--1
Father.prototype.lastName = "wang";
function Father(){
}
function Son(){
}
Son.prototype = Father.prototype; //两者关联起来
var son = new Son();
var father = new Father();
console.log(son.lastName);
console.log(father.lastName);
存在弊端,Son不能拥有自己独立的原型,
//共享原型--3(inherit)
Father.prototype.lastName = "wang";
function Father(){
}
function Son(){
}
function inherit(Target, Origin){
Target.prototype = Origin.prototype;
}
inherit(Son, Father);
Son.prototype.sex = "male";//不是自己独立拥有的
var son = new Son();
var father = new Father();//father.sex = "male"
Son不能拥有自己独立的原型,所以调整如下
//共享原型--4
function inherit(Target, Origin){
function F(){}
F.prototype = Origin.prototype;
Target.prototype = new F();
//son.__proto__ ---> new F().__proto__ ---> Father.prototype(使son.constructor属于自己)
Target.prototype.constructor = Target;
Target.prototype.uber = Origin.prototype;//查看正真继承谁:超类
}
Father.prototype.lastName = "wang";
function Father(){}
function Son(){}
inherit(Son, Father);
var son = new Son();
var father = new Father();