js中属性和方法的继承

function A(){

  this.abc = 12;

}

A.prototype.show = function(){

  alert(this.abc)

}

//继承A的属性

function B(){

  //this ->new B()

  A.call(this)   //重点是 call()这个函数

}

//继承A的方法

B.prototype = A.prototype ?

这样写其实是错的。因为这样其实是引用类型,指向的是同一个地址,比如:

B.prototype.hide = function(){

  alert(456)

}

var objA = new A();

var objB = new B();

objA.hide() //456

为了解决这个问题也很简单

for(var i in A.prototype){

  B.prototype[i] = A.prototype[i]   //这样就完成了A的方法的继承,同时又可以添加自己的方法

}

原文地址:https://www.cnblogs.com/leo666/p/5677764.html