Por ejemplo, defina dos métodos de llamadas para una función:
La copia del código es la siguiente:
función getInfo () {
Var info = {
Mensaje: "Mensaje"
};
Información de retorno;
}
1. Var info1 = getInfo ();
2. Var info2 = new getInfo ();
¿Hay alguna diferencia entre 1 y 2? ¿Son los valores obtenidos por Info1 e Info2 iguales?
El primer tipo es muy simple y usa mucho, que es ejecutar una función, aceptar el valor de retorno de la función y asignarlo al objeto info1;
La segunda situación es generalmente rara. En primer lugar, una función también es un objeto. Se puede instanciar si el objeto es seguro (la instancia realmente está llamando al constructor del objeto para inicializar el objeto). Todo el segundo caso es llamar al constructor de objeto de función getInfo y recibir la instancia inicializada por el constructor (generalmente esto). Una cosa más especial sobre la función es que si el constructor muestra el valor de retorno, el valor de retorno se reemplazará con el valor de retorno. Entonces, en el segundo caso, New GetInfo es llamar al constructor (el constructor de la función es su definición en sí) y recibir la información del valor de retorno.
solicitud:
1. Por ejemplo, HTML define el objeto DOM: <div id = "domid"> </div>, el código JS es el siguiente:
La copia del código es la siguiente:
función $ (domid) {
var dom = document.getElementById (DOMID);
regresar DOM;
}
window.onload = function () {
var dom1 = new $ ("domid");
var dom2 = $ ("domid");
alerta (DOM1 == DOM2);
}
Entonces el mensaje de solicitud de alerta se mostrará verdadero. La razón por la que uso $ como nombre de la función es porque al usar esta función, ¿es un poco como el estilo de jQuery? De hecho, este estilo de definición de función se aplica al constructor jQuery. Ya sea que use nuevo o llame a la función directamente, el valor devuelto es el mismo.
2. Defina un objeto XMLHTTPREQUEST compatible (este ejemplo se extrae de la sección 18.1 de la guía autorizada de JavaScript)
Todos saben que diferentes navegadores pueden apoyar las comunicaciones asincrónicas de manera diferente. Los primeros IES utilizaron métodos ActiveX. El siguiente código define un objeto XMLHTTPREQUEST compatible:
La copia del código es la siguiente:
if (window.xmlhttprequest === Undefined) {
window.xmlhttprequest = function () {
intentar {
// Si está disponible, use la última versión de ActiveX Object
return new ActiveXObject ("msxml2.xmlhttp.6.0");
} Catch (ex1) {
intentar {
return new ActiveXObject ("msxml2.xmlhttp.3.0");
} Catch (ex2) {
tirar un nuevo error ("XMLHTTPREQUEST no es compatible")
}
}
}
}
De esta manera, puede definirlo directamente a través de var xhr = new xmlhttprequest (), independientemente de si es un navegador IE o navegador Firefox.