Pergunta

Quando você executar:

window.toString.call("")

está tudo bem em FF / CH mas em IE8 você recebe um erro de script. Investigando um pouco mais se viu, que window.toString.call é indefinido no IE8?

Você também pode executar esta:

window.toString instanceof Function;
// false

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

Por que é que e como resolvê-lo? E eu comecei a pensar como é que jQuery funciona em primeiro lugar?

Foi útil?

Solução

window é um objeto de host, eo ECMAScript Language Specification (3ª edição ) não requer anfitrião objetos a ser derivada do objeto Object nativa. No IE (e provavelmente em alguns outros navegadores) objetos de host não são, por isso eles não suportam qualquer um dos métodos nativos ou propriedades (embora possam ter métodos ou propriedades com os mesmos nomes como métodos nativos ou propriedades que são acessíveis a scripts).

Se tudo que você quer é se apossar de método toString nativa padrão da implementação da linguagem, então você deve usar Object.prototype.toString.call("").

Outras dicas

NickFitz está correto, o método toString sobre o objeto de host que você está encontrando é puramente para que se você fez

alert (janela);

que se obtém o texto [objeto]

Tudo o que o método toString javascript () usado em seus exemplos seriam acheive é fazer uma corda de uma cadeia de modo a maneira correta de fazer o que você está tentando se;

var a =new String ("");

ou simplesmente

var b = "";

ou se você realmente quer ser bobo;

var b = "".toString();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top