Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   prototype в реальной жизни (https://javascript.ru/forum/misc/36634-prototype-v-realnojj-zhizni.html)

animhotep 22.03.2013 14:57

prototype в реальной жизни
 
начитался о prototype но не могу придумать куда его на практике применить
встретил такое, но по моему только лишний код, проще функции вызывать
var mainPage = null;
$(function(){
  mainPage = new CMainPage();
});

var CMainPage = function()
{
  this.init();
};

CMainPage.prototype.init = function()
{
  this.initSlider();
};

CMainPage.prototype.initSlider = function(){
...
}

чем это лучше такого?
$(function(){
  initSlider();
});

initSlider = function(){
...
}

может памяти меньше занимает т.к. функии в одном объекте или ещё что

реквестирую пример использования prototype из реальной практики по работе с DOM, где обычно нужно что-то скрыть/показать/переместить...

megaupload 22.03.2013 15:16

ты вообще понимаешь что такое ООП?

animhotep 22.03.2013 15:17

да, не понимаю как этот подход применить к управлению DOM

megaupload 22.03.2013 15:21

я вот тоже не понимаю каким образом обьектно ориентированное программирование основанное на прототипном наследовании ВООБЩЕ связанно с работой с DOM)

animhotep 22.03.2013 15:28

можно же обработку событий добавлять через прототипы, но не пойму зачем) а в учебниках примеры с птичками и партами

jsgeek 22.03.2013 15:28

animhotep,
К примеру добавить какой нибудь метод для работы с элементом. Допустим добавить в прототип метод hide() скрывающий элемент и тогда можно будет любой элемент скрыть вызовом
el.hide()
Или допустим напишешь метод ajaxReload() который при вызове обновляет содержимое элемента данными с сервера
el.ajaxReload()
. Удобно однако :)
В общем прототип это объект содержащий методы и свойства доступные тем кто его наследует. Эти методы и свойства создаются только один раз а значит потребляется меньше памяти чем если бы ты в каждый объект добавлял аналогичные методы или свойства.

animhotep 22.03.2013 15:37

я вроде понял что он такое и как работает..
Цитата:

Сообщение от jsgeek
Допустим добавить в прототип метод hide() скрывающий элемент и тогда можно будет любой элемент скрыть вызовом

а можно написать функцию hide = function(el){}, и вызывать hide(el)

jsgeek 22.03.2013 15:47

Конечно можно. Но зачем засорять область видимости специфичной функцией? К тому же прототипы удобнее и нагляднее использовать:
По твоему методу
hide(document.getElementById('some'));

С прототипом
document.getElementById('some').hide();

PS
Когда только начал использовать JS тоже противился прототипам, но после прочтения Флэнагана и JavaScript Шаблоны понял всю мощь и удобство их использования.

animhotep 22.03.2013 16:09

если дело только в именах то мне их не жалко)

Цитата:

Сообщение от jsgeek
Флэнагана и JavaScript Шаблоны

это она? http://www.ozon.ru/context/detail/id/3881091/ у меня следующая на очереди прочтения, может после неё дойдёт)

jsgeek 22.03.2013 16:18

Да, она. Только есть более новая 2012 года.
JavaScript Шаблоны описывает лучшие практики работы с JS.


Часовой пояс GMT +3, время: 08:30.