原型继承是我们JS中最常用的一种继承方式 子类B想要继承父类A中的所有的属性和方法(私有+公有),
只需要让B.prototype=new A;即可
原型继承的特点:它是把父类中私有的+公有的都继承到了子类原型上(子类公有的)
核心: 原型继承并不是把父类中的属性和方法克隆一份一模一样的给B,
而是让B和A 之间增加了原型链的链接,以后b的实例n想要用A中的getX方法,
需要一级级的向上查找来使用
1.原型继承 把父类私有和公有的属性方法 给子类变成子类公有的方法属性
/* function A(){ this.x =100; } A.prototype.getX=function(){ console.log((this.x)); } function B(){ this.y=200; }
// B的原型指向 A的实例 实现继承 将A的私有及公有方法属性 继承为B的公有方法
B.prototype = new A;*/
2.CALL继承
// CALL继承的:把父类私有的属性和方法 // 克隆一份一模一样的 作为子类私有的属性 function A(){ this.x = 100; } A.prototype.getX =function(){ console.log(this.x); } function B(){ A.call(this);//->A.call(n) // 把A执行让A中的this变为n }
3.冒充对象继承
把父类私有的和公有的克隆一份一模一样的给子类私有的
function A(){ this.x = 100; } A.prototype.getX=function(){ console.log(this.x); } function B(){ var temp = new A; for(var key in temp){ this[key] = temp[key]; } } var n = new B; console.log(n.x);