Мой опыт работы с jQuery (и JavaScript до него) показал, что наследование прототипов не так полезно, как я ожидал. Он использует, но не является принципиально важным для языка.
В Javascript, если вы хотите вернуть объект методом foo
:
return {
foo: function() {
alert('You called foo!');
}
};
А вызывающие абоненты могут рассматривать такие объекты как полиморфные, то есть они могут вызывать foo
, не заботясь о том, что это за «тип» объекта. Нет необходимости в наследовании.
На этом фоне прототипы являются просто оптимизацией. Они позволяют создавать большое количество объектов без необходимости реплицировать большой набор свойств функций в каждом экземпляре. Вот почему jQuery использует его внутри. У объекта jQuery есть десятки функций, и копирование их в каждый экземпляр может оказаться сложной задачей.
Но с точки зрения пользователя jQuery, прототипы не особенно важны. Он может быть переписан, чтобы не использовать их, и он все равно будет работать (но может использовать намного больше памяти).