Los estudiantes que a menudo usan Baidu Search no ignorarán el índice desplegable del cuadro de entrada. Es tan conveniente. Sin embargo, las condiciones únicas hacen que esta tecnología asincrónica enfrente algunas pruebas. La solicitud de servidor altamente concurrente insta a su asedio frontal los insta a reducir la cantidad de veces que envían AJAX tanto como sea posible. No parece que esté relacionado con este artículo, pero no lo está. En primer lugar, hagamos un anuncio gratuito para Baidu. Ingrese la palabra "front-end" en la página de inicio de Baidu y use Chromebug para ver fácilmente la respuesta enviada. Los resultados son los siguientes:
La copia del código es la siguiente:
Window.bdsug.sug ({Q: 'front -end' ;, P: falso, s: ['Desarrollo frontal', 'Ingeniero delantero', 'Bus frontal', 'Ingeniero de desarrollo frontal', 'Marco del front -end', 'Frontada de bus de bus', 'Preguntas de la entrevista frontal', 'Análisis de front -end', 'Herramientas de desarrollo frontal', 'Observación del front -end "]});
Baidu intenta representar los datos desplegables devolviendo un método SUG con el parámetro OBJ. Cuando ingresa "front-end" nuevamente sin actualizar la página, no se produjeron solicitudes similares. Esto significa que es probable que hayan establecido un objeto de caché, que se utiliza para almacenar temporalmente el objeto solicitado. Cuando se ingresa la misma palabra más adelante, la clave del objeto de caché se recuperará primero. Después de que la coincidencia sea exitosa, el valor del objeto se lee directamente y ya no envía una solicitud al servidor, lo que puede ahorrar costos efectivamente.
Lanzemos un ladrillo y traigamos a Jade, hablemos sobre el verdadero protagonista: el método de HaswnProperty.
Creo que los JSERS no están familiarizados con laProperty de Haswn, y solo estoy vendiendo agua junto al río aquí.
Es exclusivo del objeto, utilizado para determinar si existe una propiedad en la clave de un objeto, y el valor de retorno es un valor booleano. Aquí hay un ejemplo:
La copia del código es la siguiente:
var test0 = array.prototype.hasownproperty ('split'); // falso, porque el método dividido no existe en la matriz
var test1 = string.prototype.hasownproperty ('split'); // Verdadero, porque Split es un método integrado para objetos de cadena
Cuando sabes esto, parece que no es suficiente ver la fuerza de laproperty. Entonces, simplemente reproduzcamos el ejemplo de Baidu Pirf-Down:
La copia del código es la siguiente:
var data = {}, saveObj = function (val) {
if (data.hasownproperty (val)) {// Si el valor enviado existe en el objeto de datos, no se enviará ninguna solicitud
var len = data [val] .length;
para (var i = 0; i <len; i ++) {
console.log (datos [val] [i]);
}
}demás{
var url = 'http://suggestion.baidu.com/su?wd=' + val;
$ .AJAX ({// En aras de ejemplos claros, aquí usamos el Ajax de jQuery como ejemplo
URL: URL + '& P = 3 & CB = Window.BDSUG.SUG & SID = 1421_1513_1541_1542_1582 & T = 1353756355137', // El último parámetro T es una marca de tiempo
DataType: 'JSONP',
Tipo: 'Get',
éxito: function (res) {
var msg = res.data, len = msg.length;
msg == null && (msg = []);
if (len> 0) {
datos [val] = msg; // Resultados de búsqueda en caché
para (var i = 0; i <len; i ++) {
console.log (msg [i]); // Imprima el resultado de la solicitud
}
}
}, error: function () {
alerta ('error');
}
});
}
};
Algunos colegas cuestionaron que de esta manera, la memoria ocupada por los datos del objeto de caché se volverá cada vez más grande a medida que se almacenan los valores clave. Entonces quiero decir que esto es inevitable. Para guardar las solicitudes de servidor, otros deben ser sacrificados. De hecho, el espacio ocupado por el objeto de caché suele ser insignificante porque no es "memoria de residente" y se destruirá una vez que la página se actualice. Sin embargo, podemos dar otra solución, para aceptar un valor máximo para este objeto, por ejemplo, solo permite almacenar 100 pares de valor clave como máximo. Cuando el número excede los 100, las primeras diez claves almacenadas se eliminan a través del operador Eliminar o simplemente no se almacenan, por lo que se puede evitar este problema.
El método de HaswnProperty es particularmente común en la detección de objetos. Por supuesto, los estudiantes interesados también pueden aprender sobre el método PropertyIsenumerable. Es una versión mejorada de HasnownProperty. Puede detectar sus propias propiedades y la enumeración de las propiedades. Este artículo no explicará en detalle.