function A (){ this.name = "a"; // this.bat = function(){ // alert(this.name) // } } A.prototype.bat = function(){ alert(this.name) } function B(){ A.call(this); }
上面这种写法,B继承了A的方法与属性;如果B继续增加方法,A不会增加
function A (){ this.name = "a"; // this.bat = function(){ // alert(this.name) // } } A.prototype.bat = function(){ alert(this.name) } function B(){ A.call(this); } B.prototype = A.prototype;
上面这种写法,B继承了A的方法与属性,同时B的原型指向A的原型;如果B继续增加方法,A会自动增加
B.prototype.newbat=function(){ alert("c"); } var obj = new A(); obj.newbat();
前者中,obj没有新增方法;后者中,obj包含了新增的方法。