Показать сообщение отдельно
  #1 (permalink)  
Старый 27.08.2011, 14:04
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Выяснить, что функция вызвана в режиме конструктора
Есть идеи, как внутри F различать способы вызова?

function F() {}

new F;
F.call(new F);
F();


обычно делаю так
function F() {
    if (this.constructor == F) {
        return 1;
    }
    return 2;
}


Но понадобилось отделить вариант с F.call(obj), и вот когда obj - это объект, созданный с помощью F, такая проверка не подходит. Нужно отделить способы запуска [[Construct]] и [[Call]].
Ответить с цитированием