Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2010, 05:13
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Как вызывается функция?
Вот задался я вопросом.
Есть некая функция f().
Я насчитал 3 возможных вызова этой функции (может еще есть?)
1) f()
2) new f()
3) f.call(obj) или f.apply(obj)

Как внутри функции узнать каким из трех вызовов воспользовались?

У меня не получилось. Пока вышло вот что:
function f() {
  if(this == window) {
    alert("Вызов f()");
  } else if(this.constructor == arguments.callee) {
      alert("Вызов new f()");
    } else {
        alert("Вызов f.call(obj) или f.apply(obj)");
      }
}

f(); // Вызов f()
var o1 = new f(); // Вызов new f()
f.call({}); // Вызов f.call(obj) или f.apply(obj)

// Вроде как работает, однако
f.call(o1); // Вызов new f()
// Поведение абсолютно понятное, поскольку o1.constructor действительно f
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2010, 08:37
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Мараторий
Как внутри функции узнать каким из трех вызовов воспользовались?
Бред какой-то... Зачем тебе это?
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2010, 13:08
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Прикладного значения нет. Просто вдруг об этом задумался, сам решить не смог и решил спросить здесь.
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2010, 13:18
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

О том, как вызвана функция, должны говорить параметры. В любом случае сама она об этом ничего не знает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Не вызывается функция из внешнего js Danie Ваши сайты и скрипты 6 14.10.2009 11:19
В качестве параметра функции другая функция, как? Sintez Я не знаю javascript 13 11.06.2009 11:10
Объясните как вызывается ajax скрипт AddressBook из формы prog90 AJAX и COMET 3 06.06.2009 16:12
Как узнать, завершила ли свою работу рекурсивная функция Ajax Общие вопросы Javascript 4 13.05.2009 14:50