Строгий режим альтернатив этому экземпляру arguments.callee - PullRequest
13 голосов
/ 25 июня 2011

Существует старый трюк (, который я изучил на SO ), чтобы отловить вызов конструктора как функции, то есть забыть ключевое слово new. Следующее, или что-то вроде этого, идет в каждом конструкторе вверху.

if (!(this instanceof arguments.callee)) {
    throw Error("Constructor called as a function");
}

Какие есть альтернативы, когда вам нужно "use strict";?

Можно ли сохранить его общий характер? Или мы должны использовать имя конструктора вместо arguments.callee?

1 Ответ

5 голосов
/ 25 июня 2011

arguments.callee сам по себе устарел в пользу выражений именованных функций.Хотя я не обязательно согласен с этим шагом, это то, как все прогрессировало.Таким образом, замена arguments.callee на имя функции является единственным способом в строгом режиме, а также предпочтительным способом в нестрогом режиме.

...