2016-03-03 59 views
0

我似乎没有理解将一个构造函数原型分配给另一个,并使用Object.create之间的区别。 任何人都可以提供一个区别的例子吗?分配原型到Object.create原型有什么区别

我创建这个继承例如它提供了两种情况下相同的结果:

function MyObject() { 
} 

function O1() { 
    MyObject.call(this); 
} 

O1.prototype = MyObject.prototype; 

function O2() { 
    MyObject.call(this); 
} 

O2.prototype = Object.create(MyObject.prototype); 

回答

0

在你的榜样,Object.create只是创建一个模式(多余的)对象。如果创建new O1new O2,他们的继承图会是这样的:

enter image description here

+0

感谢你,我一直在寻找对每个执行的示例场景? (为了更好地理解何时使用每种实现方法) 默认情况下,MDN使用“O2”实现。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model) –

+0

@ShaiKimchi:最好的方法是只使用Object.create,不要摆弄原型。 'Function.prototype'和'new'在Javascript中不是很习惯,请参阅http://javascript.crockford.com/prototypal.html – georg