En esta publicación, dice que el operador de eliminación no funciona en las funciones.
La invocación del operador de eliminación devuelve verdadero cuando elimina una propiedad y falso en caso contrario. solo es efectivo en las propiedades de un objeto, no tiene efecto en los nombres de variables o funciones.
Pero considera este código:
delete Date; new Date(); // thros an reference errorPara asegurarme de que Date sea un constructor de funciones, escribí:
typeof Date; // "function"Este fragmento de código verifica que Date es un constructor, no un objeto. Si el operador de eliminación funciona en este tipo particular de constructor de funciones, también debería funcionar en mi constructor. Pero no es así.
function a(){} var b = new a(); delete a; // falseEntonces, el operador de eliminación no eliminó mi constructor de funciones, pero por alguna razón, eliminó el constructor de Fecha. ¿Alguien puede aclarar esta confusión mía?
Si está haciendo esto en un contexto de navegador, Date es una propiedad en window , que es lo que realmente eliminó. Que el valor de esa propiedad sea un constructor/función realmente no importa, la propiedad se ha ido y lo más probable es que esa fuera su única referencia a esa función.
Esto todavía funciona y devuelve un objeto de fecha.
var dateFn = Date; delete Date; new dateFn();Porque solo se eliminó la propiedad y no la función real.