Por exemplo, defina dois métodos de chamada para uma função:
A cópia do código é a seguinte:
função getinfo () {
var info = {
Mensagem: "Mensagem"
};
retornar informações;
}
1. Var info1 = getinfo ();
2. Var info2 = new getinfo ();
Existe alguma diferença entre 1 e 2? Os valores obtidos por info1 e info2 são os mesmos?
O primeiro tipo é muito simples e usa muito, que é executar uma função, aceitar o valor de retorno da função e atribuí -lo ao objeto Info1;
A segunda situação é geralmente rara. Primeiro de tudo, uma função também é um objeto. Se o objeto tiver certeza, ele pode ser instanciado (a instância está realmente chamando o construtor do objeto para inicializar o objeto). Todo o segundo caso é chamar o construtor do objeto GetInfo e receber a instância inicializada pelo construtor (geralmente isso). Uma coisa mais especial sobre a função é que, se o construtor exibir o valor de retorno, o valor de retorno será substituído pelo valor de retorno. Portanto, no segundo caso, o New Getinfo é chamar o construtor (o construtor da função é a sua definição) e receber as informações do valor de retorno.
aplicativo:
1. Por exemplo, html define o objeto DOM: <div id = "domid"> </div>, o código JS é o seguinte:
A cópia do código é a seguinte:
função $ (domid) {
var dom = document.getElementById (DOMID);
retornar dom;
}
window.onload = function () {
var dom1 = novo $ ("domid");
var domin2 = $ ("domid");
alerta (dom1 == dom2);
}
Em seguida, a mensagem de prompt de alerta será exibida true. A razão pela qual eu uso $ como o nome da função é porque, ao usar essa função, é um pouco como o estilo de jQuery? De fato, esse estilo de definição de função é aplicado ao construtor jQuery. Se você usa novo ou chama a função diretamente, o valor retornado é o mesmo.
2. Defina um objeto xmlHttPrequest compatível (este exemplo é extraído da Seção 18.1 do Guia de JavaScript autoritário)
Todo mundo sabe que diferentes navegadores podem suportar comunicações assíncronas de maneira diferente. Os primeiros IEs usaram métodos ActiveX. O código a seguir define um objeto xmlHttPrequest compatível:
A cópia do código é a seguinte:
if (window.xmlhttprequest === indefinido) {
window.xmlhttprequest = function () {
tentar {
// Se disponível, use a versão mais recente do objeto ActiveX
retornar new ActiveXObject ("msxml2.xmlHttp.6.0");
} catch (ex1) {
tentar {
Retornar new ActiveXObject ("msxml2.xmlHttp.3.0");
} catch (ex2) {
lançar um novo erro ("xmlhttprequest não é suportado")
}
}
}
}
Dessa forma, você pode defini -lo diretamente através de var xhr = novo xmlHttPrequest (), independentemente de ser o navegador ou navegador do Firefox.