【发布时间】:2012-10-13 23:44:56
【问题描述】:
在 JavaScript 中这两个例子有什么区别:
先决条件:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
使用 Object.create 的继承示例 A:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
使用new关键字的继承示例B
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
这两个例子似乎做同样的事情。您什么时候会选择其中之一?
另外一个问题: 考虑下面链接(第 15 行)中的代码,其中对函数自己的构造函数的引用存储在原型中。为什么这有用?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
摘录(如果您不想打开链接):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
【问题讨论】:
-
为什么这会被标记为重复!?!另一个问题和答案甚至都没有提到
Object.create。这是一个错误,应该重新打开。 -
如果有的话,它是stackoverflow.com/questions/4166616/…的副本
-
对该评论投了 13 票但仍未重新打开..?!
标签: javascript inheritance object-create