在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
。这是一个错误,应重新打开。