Только что закончил читать Crockford " JavaScript: хорошие части", и у меня есть вопрос относительно его позиции в отношении psuedo-classic против прототипных подходов. На самом деле меня это совсем не интересует его позиция; Я просто хочу понять его аргумент, чтобы я мог установить свою собственную позицию.
В книге Крокфорд, кажется, делает вывод, что функции конструктора и "все, что джаз" не должно использоваться в JavaScript, он упоминает, как "новое" ключевое слово плохо реализовано, т.е. функции неконструктора могут быть вызваны с помощью "новое" и наоборот (потенциально вызывающие проблемы).
Я думал, что понял, откуда он, но я думаю, что нет.
Когда мне нужно создать новый модуль, я обычно начинаю примерно так:
function MyModule(something) {
this.something = something || {};
}
И затем я добавлю несколько методов в его прототип:
MyModule.prototype = {
setSomething : function(){},
getSomething : function(){},
doSomething : function(){}
}
Мне нравится эта модель; это означает, что я могу создать новый экземпляр всякий раз, когда мне это нужно, и он имеет свои собственные свойства и методы:
var foo = new MyModule({option1: 'bar'});
// Foo is an object; I can do anything to it; all methods of the "class"
// are available to this instance.
Мой вопрос: Как достичь вышеуказанного, используя подход, более подходящий для JavaScript? Другими словами, если бы "JavaScript" был человеком, что бы она предложила?
Также: Что означает Крокфорд, когда он говорит, что конкретный шаблон дизайна "более выразителен", а затем другой?