Domanda

Quando si esegue:

window.toString.call("")

tutto bene in FF / CH, ma in IE8 si ottiene un errore di script. Indagando su un po 'di più si è scoperto, che window.toString.call non è definito in IE8?

È inoltre possibile eseguire questa:

window.toString instanceof Function;
// false

alert(window.toString);
// function toString() {
//    [native code]
// }

Perché è questo e come risolverlo? e ho iniziato a chiedermi come mai jQuery funziona in primo luogo?

È stato utile?

Soluzione

window è un oggetto host, e il specifica del linguaggio ECMAScript (3a edizione ) non richiede oggetti host per essere derivato dall'oggetto Object nativo. In IE (e probabilmente in alcuni altri browser) oggetti host non sono, in modo da non sostenere uno dei metodi o proprietà nativi (anche se possono avere metodi o proprietà con gli stessi nomi dei metodi nativi o proprietà che sono accessibili ai script).

Se invece si è interessati ad entrare in possesso di metodo nativo predefinito della implementazione del linguaggio toString allora dovreste usare Object.prototype.toString.call("").

Altri suggerimenti

NickFitz è corretta, il metodo toString sull'oggetto host che si stanno trovando è puramente in modo che se avete fatto

alert (finestra);

si otterrebbe il testo [oggetto]

Tutto ciò che il metodo javascript toString () utilizzato nei tuoi esempi sarebbero acheive è quello di fare una stringa da una stringa in modo che il modo corretto di fare ciò che si sta cercando è;

var a =new String ("");

o semplicemente

var b = "";

o se si vuole veramente essere sciocco;

var b = "".toString();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top