Вопрос с точки зрения дизайна языка.Какие уроки можно извлечь из прототипа в javascript?
Я должен немного объяснить ситуацию. Я работаю над вариантом javascript, который не поддерживает прототипы, однако это просроченная система достойного типа (что особенно важно для instanceof). Спецификация ecmascript не важна, поэтому у меня есть свобода реализовать что-то другое и более подходящее.
В варианте: -
- Вы не объявлять конструктор с
function foo()
, а конструкторы объявлены в шаблонных файлах, а это значит, конструктор существует в пространстве имен (detirmined по пути к файлу) - В настоящее время все наследование поведения выполняется путем применения шаблонов, что означает, что все общие функции копируются на каждый отдельный объект (после этого нет прототипов).
Никогда не будучи веб-разработчиком, это ставит меня в слегка причудливое положение, никогда не использовавшее прототипы в гневе. Хотя это не остановило меня, когда у меня были мнения.
Мои основные проблемы, связанные с моделью прототипа, как я понимаю, что это
- ненужное засорение объекта пространства имен, obj.prototype, obj.constructor (является ли это незрелые возражение, пытаясь сохранить способность лечить объекты, как карты, которые, возможно, это не так?)
- Возможность изменить совместное поведение во время выполнения кажется ненужной, когда прямое использование дополнительного уровня косвенности будет более прямым
obj.shared.foo()
. В частности, это довольно большая головная боль в реализации. - Люди, похоже, не очень хорошо понимают прототипы, например. различие между прототипом и конструктором.
Итак, чтобы обойти эти мысли, я хочу иметь специальные конструкторы оператора. В принципе, основной принцип заключается в том, что каждый объект имеет список конструкторов, к которым иногда вам нужен доступ.
var x = new com.acme.X();
com.acme.Y(x,[]); // apply y
(constructorsof x) // [com.acme.Y,com.acme.X,Object];
x instanceof com.acme.X; // true
x instanceof com.acme.Y; // true
оценили все отзывы, я ценю это может быть трудно оценить мой POV, поскольку есть много я пытаюсь передать, но важное решение и мнение эксперта может быть неоценимой.
- все, что может улучшить мое понимание модели прототипа, хорошее и плохое.
- мысли о моем предложении
спасибо,
Майк
редактировать: предложение, мы надеемся, имеет смысл сейчас.
Можете ли вы задать более точный вопрос?У меня возникли проблемы с пониманием того, о чем вы просите обратной связи. И я также не уверен, что понимаю ваше предложение. –
Подождите, я сделал ошибку (конструктор (конструктор x)) здесь не имеет смысла: S –
исправил это, на самом деле, обратно к тому, что было моим первоначальным мышлением, после того, как подумал, что связанный список имеет смысл. Обратная связь, ну, я предлагаю систему типов, применяя конструкторы, добавляя типы к объекту, но ничего не делаю. Это проще, поэтому какие большие компромиссы ... –