У JavaScript в чому різниця між цими двома прикладами:
Необхідна умова:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
Приклад спадкування A за допомогою Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
Приклад спадкування 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
. Це помилка, і її слід знову відкрити.