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