window.toString.call no está definido en IE8
-
13-09-2019 - |
Pregunta
Al ejecutar:
window.toString.call("")
todo está bien en FF / CH pero en IE8 se obtiene un error de script. Investigando un poco más se vio después, que window.toString.call
no está definido en IE8?
También puede ejecutar la siguiente:
window.toString instanceof Function;
// false
alert(window.toString);
// function toString() {
// [native code]
// }
¿Por qué es y cómo se puede solucionar? Y empecé a preguntarme cómo es que funciona jQuery en el primer lugar?
Solución
window
es un objeto de host, y el ECMAScript Language Specification (tercera edición ) no requiere objetos huésped que se procede del objeto Object
nativo. En IE (y probablemente en algunos otros navegadores) objetos host no son, por lo que no son compatibles con cualquiera de los métodos o propiedades nativas (aunque pueden tener métodos o propiedades con los mismos nombres que los métodos nativos o propiedades que son accesibles a guiones).
Si lo que desea es hacerse con el método toString
nativa por defecto de la aplicación lenguaje, entonces debería usar Object.prototype.toString.call("")
.
Otros consejos
NickFitz es correcta, el método toString en el objeto host que se está encontrando es puramente de manera que si lo hiciera
alerta (ventana);
que se obtendría el texto [objeto]
Todo lo que el método toString () de JavaScript usado en sus ejemplos se acheive es hacer una cadena de una cadena por lo que la forma correcta de hacer lo que está tratando es;
var a =new String ("");
o simplemente
var b = "";
o si realmente quiere ser tonto;
var b = "".toString();