W JavaScript jaka jest różnica między tymi dwoma przykładami:
Warunek wstępny:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
Przykład dziedziczenia A przy użyciu Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
Przykład dziedziczenia B przy użyciu nowego słowa kluczowego
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
Oba przykłady wydają się robić to samo. Kiedy wybrałbyś jedną z nich?
Dodatkowe pytanie: Rozważ kod w poniższym linku (wiersz 15), gdzie w prototypie znajduje się odniesienie do własnego konstruktora funkcji. Dlaczego jest to przydatne?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
Fragment (jeśli nie chcesz otwierać linku):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
Object.create
. To pomyłka i należy ją ponownie otworzyć.