Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2010, 22:33
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Немного ООП!
Иногда не могу определиться какую нотацию использовать.
Так вот хочу спросить есть ли те кто подобное препарировал и может дать заключение по ниже приведенным примерам кода (относительно производительности, безопасности и прочим факторам)

1.
var object = function(){
    this.method = function(a){
         return a*a;
    };
};

alert(new object().method(2));

2.
var object = function(){};

object.prototype.method = function(a){
      return a*a;
};

alert(new object().method(2));

3.
var object = new function(){
    var method = {
        method : function(a){
           return a*a;
        }
    };
   return method;
};

alert(object.method(2));

4. не продакшн (просто ради примера объекта с двумя контекстами)
var object = (function(){
   this.method = function(a){
      return a*a;
   };
   return this;
})();

alert(object.method(2));

5.
var object = new function(){
   this.method = function(a){
      return a*a;
   };
   return this;
};

alert(object.method(2));


Можно дополнить своими вариантами

Последний раз редактировалось monolithed, 30.07.2011 в 00:44.
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2010, 22:48
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Очевидно, что при использовании прототипа тратится меньше памяти (При количестве экземпляров > 1, конечно). Ну и, возможно, конструктор работает дольше.

Но в этом случае не получится реализовать приватные поля, т.к. они обычно реализуются замыканиями (разве что определить публичные getter + setter).

А вообще, все эти отличия в плане клибоайтов затрат памяти и наносекунд времени не играют особой роли. Выбирайте тот способ, который удобнее Вам.

Последний раз редактировалось B@rmaley.e><e, 27.10.2010 в 22:52.
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2010, 22:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

1 vs 2 обмусолено не раз, лучше прототип, как сказал уже B@rmaley.e><e.

3 и 5 по сути ничем не отличаются -- фабрика объектов. Иногда нужна, но редко.

В 4 this будет равен window, т.е. семантически неверно.
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2010, 22:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Отличный вопрос для собеседования, кстати
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте маленькую ооп библиотеку mexoboy Общие вопросы Javascript 14 08.11.2010 17:09
ООП PHP вопрос mycoding Серверные языки и технологии 9 03.06.2010 02:57
Возможно, немного не в тему. Вид тега Select parzh-junior Элементы интерфейса 8 30.04.2010 00:39
скрипт листающий по три картинки немного подкорректировать galap Events/DOM/Window 2 27.04.2010 20:26