Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2013, 06:39
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Зачем использовать прототипы в 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...

Последний раз редактировалось Shitbox2, 14.02.2013 в 06:51.
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2013, 09:03
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А наследование? А зачем для каждого экземпляра копировать все функции? У вас стоит задача по-максимуму забить память пользователя?

Сообщение от Shitbox2
ко всем элементам объекта приходится обращаться через this
Что еще за "элементы" ? Свойства может? А как к ним еще обращаться?
Ну можете писать так если уж сильно прижало:
with (this) {
    prop1 ..
}


И причем тут jQuery? Можно абстрактный пример без левого кода?
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2013, 10:27
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

Потому что функцию в прототип ты записываешь один раз и память занимает одну, а доступ к неё есть у всех обьектов как к родной) как к ЯКОБЫ родной.
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2013, 13:19
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

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)
        }
    }
}

И где тут лишняя память расходуется?
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2013, 13:22
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Так а я тут и конструктора не вижу. О каких прототипах речь без конструктора? Есть конструктор = есть экзлемпляры = есть прототип. Тут ничего этого нет и не нужно.
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2013, 13:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Shitbox2
все пишут в jQuery и я тоже
Сообщение от Shitbox2
this[i].onkeydown
Это DOM Level 1, древнейший javascript метод навешивания обработчика (в единственном экземпляре, кстати, поэтому ваш скрипт легко может сломать что-нибудь), а не jQuery.

Сообщение от Shitbox2
На чистом JS ничего толкового днем с огнем не сыщешь
Это потому что вы интересуетесь только DOM'ом.
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2013, 15:27
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

Сообщение от Shitbox2
И где тут лишняя память расходуется?
ты совсем тупой? тебе сказали что

function Cat(){
    this.ololo = 11;
}


расходует больше памяти чем

function Cat(){}
Cat.prototype.ololo = 11;


По этому используют прототипы. при чем тут жуквери какие то?? тебе ответили на вопрос "зачем использовать прототипы." - ДЛЯ УСТРАНЕНИЯ ИЗБЫТОЧНОСТИ и соответственно уменьшения потребления ресурсов.

Сообщение от Shitbox2
Ну вот пример... Попытался по-максимуму на чистом JS.
ни кто тебе не говорит что жуквери жухе чем чистый жс. зачем ты пытался только на нем? ты вообще такой странный если честно, если чо то не знаешь то спрашивай и слушай а не утверждай. ни кто с тобой спорить не будет коли сам знаешь (даже если знаешь не правильно).

Последний раз редактировалось megaupload, 14.02.2013 в 15:29.
Ответить с цитированием
  #8 (permalink)  
Старый 15.02.2013, 05:32
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Ок. Не буду ничего выдумывать. См. https://github.com/twitter/bootstrap...trap-button.js

Из 100 строчек кода половина обвеска. Зачем это все нужно? Зачем там конструкторы и прототипы? И почему без них будет избыточность?
Ответить с цитированием
  #9 (permalink)  
Старый 15.02.2013, 05:39
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Shitbox2
Зачем это все нужно?
А ты попробуй без всего этого написать такой же по функционалу плагин и поймешь. А если не поймешь - объясним. Дай знать когда напишешь код.
Ответить с цитированием
  #10 (permalink)  
Старый 15.02.2013, 11:16
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Shitbox2, со временем поймёшь.

ЗЫ: по ссылке, если не использовать прототипы, то в случае, когда на странице много кнопок могут быть проблемы, т.к. каждая кнопка будет жрать кучу лишней памяти.
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передавать параметры из php скрипта в js imissyouso Общие вопросы Javascript 3 01.08.2012 18:24
Зачем программисту знать Ext JS? Shaci Оффтопик 3 25.07.2012 03:16
JS не отправляет вложения аленка86 AJAX и COMET 3 21.07.2012 17:06
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28
Html метки + div + JS boltayka Events/DOM/Window 1 07.09.2009 17:21