Зачем использовать прототипы в JS?
Ну правда? Пользовался, пользовался, так и не понял зачем. Намного проще и понятнее запихать все функции в свою библиотеку как есть. А еще сделать эту функцию jQuery-плагином, если используется эта библиотека
jQuery.fn.myFunc = function (options) { this.options = $.extend({ 'opt1': true, 'opt2': false }, options || {}); functon one () {...} functon two () {...} return this.each(function () { functon subOne () {...} functon subTwo () {...} }); };Не понимаю, зачем ребята в том же Бутстрапе извращаются, создают прототип, конструктор, потом все это отдельно заворачивают в jQuery-плагин, где создают экземпляр объекта... Не, кончено допускаю, что могут быть задачи, где использование объектов оправдано... Игры... Но пока ни одного плагина не видел где бы объект был действительно необходим. Зачем их делают тогда? P.S. Не говоря уже о том, что ко всем элементам объекта приходится обращаться через this... |
А наследование? А зачем для каждого экземпляра копировать все функции? У вас стоит задача по-максимуму забить память пользователя?
Цитата:
Ну можете писать так если уж сильно прижало: with (this) { prop1 .. } И причем тут jQuery? Можно абстрактный пример без левого кода? |
Потому что функцию в прототип ты записываешь один раз и память занимает одну, а доступ к неё есть у всех обьектов как к родной) как к ЯКОБЫ родной.
|
jQuery потому что все пишут в jQuery и я тоже... На чистом JS ничего толкового днем с огнем не сыщешь.
Ну вот пример... Попытался по-максимуму на чистом JS. На каждое текстовое поле навешивается функция-обработчик для автодополнения $('input').autocomplit(); jQuery.fn.autocomplit = function () { //ф-я обработки ввода и вывода подсказки function makeBaloon (obj, text) {...} //Перебираем все текстовые поля for (var i = 0, i < this.length, i++) { this[i].onkeydown = function () { makeBaloon(this[i], value) } } } И где тут лишняя память расходуется? |
Так а я тут и конструктора не вижу. О каких прототипах речь без конструктора? Есть конструктор = есть экзлемпляры = есть прототип. Тут ничего этого нет и не нужно.
|
Цитата:
Цитата:
Цитата:
|
Цитата:
function Cat(){ this.ololo = 11; } расходует больше памяти чем function Cat(){} Cat.prototype.ololo = 11; По этому используют прототипы. при чем тут жуквери какие то?? тебе ответили на вопрос "зачем использовать прототипы." - ДЛЯ УСТРАНЕНИЯ ИЗБЫТОЧНОСТИ и соответственно уменьшения потребления ресурсов. Цитата:
|
Ок. Не буду ничего выдумывать. См. https://github.com/twitter/bootstrap...trap-button.js
Из 100 строчек кода половина обвеска. Зачем это все нужно? Зачем там конструкторы и прототипы? И почему без них будет избыточность? |
Цитата:
|
Shitbox2, со временем поймёшь.
ЗЫ: по ссылке, если не использовать прототипы, то в случае, когда на странице много кнопок могут быть проблемы, т.к. каждая кнопка будет жрать кучу лишней памяти. |
Часовой пояс GMT +3, время: 07:23. |