Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.08.2013, 09:48
Аватар для ExeiL
Интересующийся
Отправить личное сообщение для ExeiL Посмотреть профиль Найти все сообщения от ExeiL
 
Регистрация: 04.12.2009
Сообщений: 13

Сообщение от ksa Посмотреть сообщение
По мне так это масло масляное...
1 объект/экземпляр и две переменные со ссылкой на него...
Ну не совсем, в "someFunction = someFn()" идет сначала выполнение someFn (так сказать подготовка), а потом присвоение результата - свежеиспеченный экземпляр функции...
Ответить с цитированием
  #12 (permalink)  
Старый 23.08.2013, 09:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от ExeiL
Ну не совсем
О, точно.

Но с new оно как-то по коду лучше и явно представлено...
Ответить с цитированием
  #13 (permalink)  
Старый 23.08.2013, 12:02
Аватар для ExeiL
Интересующийся
Отправить личное сообщение для ExeiL Посмотреть профиль Найти все сообщения от ExeiL
 
Регистрация: 04.12.2009
Сообщений: 13

Минусы объекта:
- this. надо сохранять перед передачей в setTimeout
- при вызове метода из SetTimeout надо обрамлять в function(){ } // Решается добавлением "var savedThis = this;" в начало функции и последующем использовании savedThis вместо this. (не уверен в кроссбраузерности)

Пример:
function SomeFn() {
  this.info = "Если видно, значит инфо доступно";

  this.someShow = function() {
    var savedThis = this;
    setTimeout(function(){ alert(savedThis.info); }, 10);  // Если написать this.info, получим undefined
  };
}

var someFunction = new SomeFn;
setTimeout(function(){ someFunction.someShow(); }, 10); // Если написать setTimeout(someFunction.someShow, 10), получим undefined


PS: По скорости разницы с замыканием при тестах не заметил...

Последний раз редактировалось ExeiL, 23.08.2013 в 13:11.
Ответить с цитированием
  #14 (permalink)  
Старый 23.08.2013, 13:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

ExeiL, вот и думай что есть для тебя "лучше"...
Ответить с цитированием
  #15 (permalink)  
Старый 23.08.2013, 13:33
Аватар для ExeiL
Интересующийся
Отправить личное сообщение для ExeiL Посмотреть профиль Найти все сообщения от ExeiL
 
Регистрация: 04.12.2009
Сообщений: 13

Сообщение от ksa Посмотреть сообщение
ExeiL, вот и думай что есть для тебя "лучше"...
Выбрал объект, т.к. разница между замыканием только в том, что он не возвращает при someFunction(); ибо [object Object], а не [object Function]...

Когда надо будет использовать функцию напрямую - замыкание, когда не надо - объект)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установить имя конструктора Андрей Параничев Общие вопросы Javascript 8 17.11.2011 10:09
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Специфические функции и свойства различных браузеров onejsquestion Javascript под браузер 3 28.06.2010 10:54
Добавление метода к функции YISHIMITSY Общие вопросы Javascript 2 17.02.2010 12:49
Добавление свойств посредством DOM Bajjy Общие вопросы Javascript 8 02.10.2008 14:51