Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление индивидуальных свойств к функции (https://javascript.ru/forum/misc/40877-dobavlenie-individualnykh-svojjstv-k-funkcii.html)

ExeiL 23.08.2013 09:48

Цитата:

Сообщение от ksa (Сообщение 268888)
По мне так это масло масляное... :)
1 объект/экземпляр и две переменные со ссылкой на него...

Ну не совсем, в "someFunction = someFn()" идет сначала выполнение someFn (так сказать подготовка), а потом присвоение результата - свежеиспеченный экземпляр функции...

ksa 23.08.2013 09:50

Цитата:

Сообщение от ExeiL
Ну не совсем

О, точно. :yes:

Но с new оно как-то по коду лучше и явно представлено...

ExeiL 23.08.2013 12:02

Минусы объекта:
- 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: По скорости разницы с замыканием при тестах не заметил...

ksa 23.08.2013 13:06

ExeiL, вот и думай что есть для тебя "лучше"... :)

ExeiL 23.08.2013 13:33

Цитата:

Сообщение от ksa (Сообщение 268928)
ExeiL, вот и думай что есть для тебя "лучше"... :)

Выбрал объект, т.к. разница между замыканием только в том, что он не возвращает при someFunction(); ибо [object Object], а не [object Function]...

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


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