Dziedziczenie JavaScript: Object.create vs new
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ś jeden nad drugim?
Dodatkowe pytanie: Rozważ kod w poniższym linku (linia 15), w którym odniesienie do własnego konstruktora funkcji jest przechowywane w prototypie. Dlaczego jest to przydatne?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
Fragment (jeśli nie chcesz otworzyć linku):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}