Schüler, die häufig die Baidu-Suche verwenden, ignorieren den Dropdown-Index des Eingangsfelds nicht. Es ist so bequem. Die einzigartigen Bedingungen machen diese asynchrone Technologie jedoch zu einigen Tests. Die hochkarätige Serveranforderung fordert ihre Front-End-Belagerung auf, die Häufigkeit zu verringern, mit der sie Ajax so weit wie möglich senden. Es klingt nicht so, als ob es mit diesem Artikel zusammenhängt, aber es ist nicht so. Lassen Sie uns zunächst eine kostenlose Werbung für Baidu machen. Geben Sie das Wort "Front-End" auf der Baidu-Homepage ein und verwenden Sie Chromebug, um die gesendete Antwort leicht zu sehen. Die Ergebnisse sind wie folgt:
Die Codekopie lautet wie folgt:
window.bdsug.sug ({q: 'Frontend';, p: false, s: ['Frontendentwicklung', 'Frontendingenieur', 'Frontend -Bus', 'Frontend Development Engineer', 'Front End Framework', 'Frontend -Bus -Frequenz “,' Frontend -Interviewfragen ',' Frontend -Endanalyse ',' Frontend -End -Tools ',' Frontend Beobachtung '“.
Baidu versucht die Pulldown-Daten zu rendern, indem sie eine SUG-Methode mit OBJ-Parameter zurückgibt. Wenn Sie erneut "Front-End" eingeben, ohne die Seite zu aktualisieren, traten ähnliche Anfragen nicht auf. Dies bedeutet, dass sie wahrscheinlich ein Cache -Objekt erstellt haben, mit dem das angeforderte Objekt vorübergehend gespeichert wird. Wenn das gleiche Wort später eingegeben wird, wird zuerst der Schlüssel des Cache -Objekts abgerufen. Nach erfolgreicher Übereinstimmung wird der Wert des Objekts direkt gelesen und sendet keine Anforderung mehr an den Server, wodurch die Kosten effektiv sparen können.
Lassen Sie uns einen Ziegelstein werfen und Jade mitbringen. Lassen Sie uns über den echten Protagonisten: HasownProperty -Methode sprechen.
Ich glaube, dass Jsers mit HasownProperty nicht nicht vertraut sind, und ich verkaufe hier nur Wasser am Fluss.
Es ist exklusiv für das Objekt, das verwendet wird, um festzustellen, ob eine Eigenschaft im Schlüssel eines Objekts vorhanden ist, und der Rückgabewert ist ein boolescher Wert. Hier ist ein Beispiel:
Die Codekopie lautet wie folgt:
var test0 = array.prototype.hasownProperty ('split'); // false, weil die Split -Methode im Array nicht vorhanden ist
var test1 = string.prototype.hasownProperty ('split'); // true, da Split eine integrierte Methode für String-Objekte ist
Wenn Sie das wissen, scheint es nicht ausreichend, die Kraft von HasownProperty zu sehen. Lassen Sie uns also einfach das Beispiel von Baidu Pulldown reproduzieren:
Die Codekopie lautet wie folgt:
var data = {}, saveObj = function (val) {
if (data.hasownProperty (val)) {// Wenn der über eingereichte Wert im Datenobjekt vorhanden ist, wird keine Anfrage gesendet
var len = data [val] .Length;
für (var i = 0; i <len; i ++) {
console.log (data [val] [i]);
}
}anders{
var url = 'http://suggestion.baidu.com/su?wd=' + val;
$ .ajax ({// Aus Gründen der klaren Beispiele verwenden wir hier Jquery's Ajax als Beispiel
URL: URL + '& P = 3 & CB = Fenster.bdsug.sug & Sid = 1421_1513_1541_1542_1582 & t = 1353756355137', // Der letzte Parameter t ist ein Zeitstempel
Datentyp: 'JSONP',
Typ: 'get',,
Erfolg: Funktion (res) {
var msg = res.data, len = msg.length;
msg == null && (msg = []);
if (len> 0) {
Daten [val] = msg; // zwischengespeicherte Suchergebnisse
für (var i = 0; i <len; i ++) {
console.log (msg [i]); // Drucken Sie das Anforderungsergebnis aus
}
}
}, Fehler: function () {
alert ('error');
}
});
}
};
Einige Kollegen fragten, dass der von den Cache -Objektdaten besetzte Speicher auf diese Weise immer größer wird, wenn die Schlüsselwerte gespeichert werden. Dann möchte ich sagen, dass dies unvermeidlich ist. Um Serveranfragen zu sparen, müssen andere geopfert werden. Tatsächlich ist der von dem Cache -Objekt besetzte Raum normalerweise vernachlässigbar, da es sich nicht um "residente Speicher" handelt und er zerstört wird, sobald die Seite aktualisiert ist. Wir können jedoch eine andere Lösung geben, um einem Spitzenwert für dieses Objekt zuzustimmen. Zum Beispiel ermöglicht es nur 100 Schlüsselwertepaare. Wenn die Zahl 100 überschreitet, werden die ersten zehn gespeicherten Schlüssel über den Löschbetreiber gelöscht oder einfach nicht gespeichert, sodass dieses Problem vermieden werden kann.
Die HasownProperty -Methode ist besonders häufig bei der Objekterkennung. Natürlich können interessierte Schüler auch mehr über die PropertySesienumerable -Methode erfahren. Es ist eine verbesserte Version von HasownProperty. Es kann seine eigenen Eigenschaften und die Aufzählung der Eigenschaften erkennen. Dieser Artikel wird nicht im Detail erklären.