javascript中,两种继承方法的区别

 function Foo(){ /*some attributes and methods here*/ }
 function Bar(){}

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

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

继承方法还有很多,不只这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();
创建了实例,比起前面那种,浪费些内存,不过可以忽略