javascript继承为什么要使用Object.create?

Nao*_*aor 2 javascript jquery backbone.js

我在StackOverflow中看到了这个:https://stackoverflow.com/a/7786090/289246

答案告诉我们:

DynamicBody.prototype = Object.create( PhysicsBody.prototype );
Run Code Online (Sandbox Code Playgroud)

使用Object.create的原因是什么?
为什么我们不能使用:

DynamicBody.prototype = PhysicsBody.prototype;
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 10

您可以(技术上),但随后您所做的任何更改DynamicBody.prototype也将被启用PhysicsBody.prototype,即它将影响所有PhysicsBody实例,这通常不是您想要的.

例:

function Foo() {};
Foo.prototype.say = function() {
   alert('Foo');
};
var foo = new Foo();

function Bar() {};
Bar.prototype = Foo.prototype;
Bar.prototype.say = function() {
    alert('Bar');
};

foo.say(); // alerts 'Bar'
Run Code Online (Sandbox Code Playgroud)

Object.create 增加一个间接层.