Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2010, 08:11
Аспирант
Отправить личное сообщение для stopkran Посмотреть профиль Найти все сообщения от stopkran
 
Регистрация: 12.12.2009
Сообщений: 54

Как повесить обработчик на событие "вызов функции"?
Догадываюсь, что это "идеологически невозможно". В более общем плане задача такая: вызывается по очереди несколько функций, хочу измерить время работы каждой. Сейчас делаю так:

function func (){
    var d0 = new Date()
    <тело функции>
    addLog("func: ", d0)
}


Первое упрощение могло бы быть примерно таким: в конце исполняемой функции вызывать addLog() без параметров, а параметры - d0 и имя исполняемой функции получать внутри addLog(). Возможно ли это?

Второе (и третье): можно ли в javascript сделать так, чтобы при вызове любой функции всегда срабатывала ещё одна определённая функция? Или, например, чтобы при вызове любой функции значение (пусть глобальной) переменной d0 устанавливалось в new Date()?
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2010, 09:46
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Если стоит задача измерять время работы функции, то создайте функцию-обертку для замеров.
function profiling(fnc){
  var start = new Date;
  fnc();
  return {fnc: fnc.name, time: new Date - start};
}
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2010, 09:17
Аспирант
Отправить личное сообщение для stopkran Посмотреть профиль Найти все сообщения от stopkran
 
Регистрация: 12.12.2009
Сообщений: 54

Сообщение от B@rmaley.e><e
return {fnc: fnc.name, time: new Date - start};
не получается: у моих функций почему-то нет свойства name
Ответить с цитированием
  #4 (permalink)  
Старый 15.12.2010, 14:15
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Оно есть вроде бы только в FF
Ответить с цитированием
  #5 (permalink)  
Старый 15.12.2010, 14:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Оно есть везде, если оно указано. У анонимных функций его, как ни странно, нет.
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2010, 15:24
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Opera 10.63 есть, IE 8 нет.
Ответить с цитированием
  #7 (permalink)  
Старый 15.12.2010, 16:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Дада, в IE "баг". Там имя функции можно из func.toString() вытащить.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2010, 09:27
Аспирант
Отправить личное сообщение для stopkran Посмотреть профиль Найти все сообщения от stopkran
 
Регистрация: 12.12.2009
Сообщений: 54

Сообщение от Kolyaj
У анонимных функций его, как ни странно, нет.
Значит, обёртка (типа предлагаемой Бармалеем) для анонимных функций принципиально невозможна?
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2010, 10:36
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

А объясните мне, почему это свойство в нижеприведенном контексте выводит название iframe'a?
(function foo(){alert(name)})();
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2010, 10:53
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от stopkran
Значит, обёртка (типа предлагаемой Бармалеем) для анонимных функций принципиально невозможна?
как сказали выше, возможна

Сообщение от monolithed
А объясните мне, почему это свойство в нижеприведенном контексте выводит название iframe'a?
а что оно по-твоему должно выводить?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
Как создать событие? remitmaster Общие вопросы Javascript 9 26.07.2008 18:31
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40
Как вставить событие внутрь document.write Vivasvan Events/DOM/Window 8 13.06.2008 20:02
Как обработать событие Cresh Events/DOM/Window 1 31.05.2008 06:17