2 foweifo FoWeiFo 于 2015.06.01 12:31 提问

javascript中,两种继承方法的区别
 function Foo(){ /*some attributes and methods here*/ }
 function Bar(){}

比如声明了Foo之后,想让Bar继承它,好像有两种方法:
1. Bar.prototype = new Foo();
2. Bar.prototype = Foo.prototype;
这两种方法是完全等价的吗?还是有啥细微差别?

2个回答

beacon_2011
beacon_2011   Rxr 2015.06.01 13:08

一个是实例化,一个是静态类~

danielinbiti
danielinbiti   Ds   Rxr 2015.06.01 13:29

继承方法还有很多,不只这2种
这两种都是原型继承的方式
``
一、继承Prototype Bar.prototype = Foo.prototype;

用Foo的原型对象来覆盖Bar的原型对象;前面说到对象的赋值实质上是引用赋值,所以如果Bar.prototype上的任何修改都会体现到Foo.prototype中,即子类会影响父类。
Bar.prototype.add=function(){alert("add")};
Foo.prototype.add();//弹出add

二、继承实例 Bar.prototype = new Foo();
创建了实例,比起前面那种,浪费些内存,不过可以忽略


Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!