2011-06-25 10 views
13

Hay un viejo truco (that I learned on SO) para llamar a un constructor como una función, es decir, olvidando la palabra clave new. Lo siguiente, o algo así, va en cada constructor en la parte superior.Alternativas de modo estricto a esta instancia de arguments.callee

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

¿Cuáles son las alternativas cuando necesita "use strict";?

¿Se puede conservar su naturaleza genérica? ¿O tenemos que usar el nombre del constructor en lugar de arguments.callee?

Respuesta

5

arguments.callee está en desuso en favor de las expresiones de función nombradas. Aunque no necesariamente estoy de acuerdo con este movimiento, es cómo han progresado las cosas. Como tal, reemplazar arguments.callee con el nombre de función es la única manera en modo estricto, y también es la forma preferida en modo no estricto.

Cuestiones relacionadas