Siswa yang sering menggunakan pencarian Baidu tidak akan mengabaikan indeks drop-down dari kotak input. Itu sangat nyaman. Namun, kondisi unik membuat teknologi asinkron ini menghadapi beberapa tes. Permintaan server yang sangat bersamaan mendesak pengepungan front-end mereka mendesak mereka untuk mengurangi berapa kali mereka mengirim Ajax sebanyak mungkin. Kedengarannya tidak terkait dengan artikel ini, tetapi tidak. Pertama -tama, mari kita buat iklan gratis untuk Baidu. Masukkan kata "front-end" di beranda Baidu, dan gunakan Chromebug untuk dengan mudah melihat respons yang dikirim. Hasilnya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
window.bdsug.sug ({q: 'front end';, p: false, s: ['pengembangan ujung depan', 'insinyur ujung depan', 'bus ujung depan', 'insinyur pengembangan ujung depan', 'kerangka kerja ujung depan', 'frekuensi bus ujung depan', 'pertanyaan wawancara ujung depan', 'analisis ujung depan', 'alat pengembangan ujung depan', 'pengamatan ujung depan']), 'analisis ujung depan', 'alat pengembangan ujung depan', 'front end end pengamatan']), 'Analisis Ujung Depan', 'Alat Pengembangan Depan', ',' Front End Observation '),' Depan Analisis ',' Alat Pengembangan Ujung Depan ',', 'Front End Observation');
Baidu mencoba membuat data pull-down dengan mengembalikan metode SUG dengan parameter OBJ. Ketika Anda memasukkan "front-end" lagi tanpa menyegarkan halaman, permintaan serupa tidak terjadi. Ini berarti bahwa mereka cenderung telah membuat objek cache, yang digunakan untuk sementara menyimpan objek yang diminta. Ketika kata yang sama dimasukkan nanti, kunci objek cache akan diambil terlebih dahulu. Setelah pertandingan berhasil, nilai objek dibaca secara langsung dan tidak lagi mengirim permintaan ke server, yang secara efektif dapat menghemat biaya.
Mari kita lemparkan batu bata dan bawa Jade, mari kita bicara tentang protagonis yang sebenarnya: metode HasownProperty.
Saya percaya bahwa JSERS tidak terbiasa dengan HasownProperty, dan saya hanya menjual air di tepi sungai di sini.
Ini eksklusif untuk objek, yang digunakan untuk menentukan apakah suatu properti ada di kunci suatu objek, dan nilai pengembalian adalah nilai boolean. Inilah contohnya:
Salinan kode adalah sebagai berikut:
var test0 = array.prototype.hasownproperty ('split'); // false, karena metode split tidak ada di array
var test1 = string.prototype.hasownproperty ('split'); // Benar, karena split adalah metode bawaan untuk objek string
Ketika Anda mengetahui hal ini, tampaknya tidak cukup untuk melihat kekuatan HasownProperty. Jadi, mari kita mereproduksi contoh pull-down Baidu:
Salinan kode adalah sebagai berikut:
var data = {}, saveObj = function (val) {
if (data.hasownproperty (val)) {// Jika nilai yang dikirimkan ada dalam objek data, tidak ada permintaan yang akan dikirim
var len = data [val] .length;
untuk (var i = 0; i <len; i ++) {
console.log (data [val] [i]);
}
}kalau tidak{
var url = 'http://sugestion.baidu.com/su?wd=' + val;
$ .Ajax ({//
URL: url + '& p = 3 & cb = window.bdsug.sug & sid = 1421_1513_1541_1542_1582 & t = 1353756355137', // Parameter terakhir T adalah stempel waktu
DataType: 'jsonp',
Ketik: 'Dapatkan',
Sukses: function (res) {
var msg = res.data, len = msg.length;
msg == null && (msg = []);
if (len> 0) {
data [val] = msg; // Hasil pencarian yang di -cache
untuk (var i = 0; i <len; i ++) {
console.log (msg [i]); // Cetak hasil permintaan
}
}
}, error: function () {
alert ('error');
}
});
}
};
Beberapa kolega mempertanyakan bahwa dengan cara ini, memori yang ditempati oleh data objek cache akan menjadi lebih besar dan lebih besar karena nilai -nilai kunci disimpan. Kemudian saya ingin mengatakan bahwa ini tidak bisa dihindari. Untuk menyimpan permintaan server, orang lain harus dikorbankan. Faktanya, ruang yang ditempati oleh objek cache biasanya diabaikan karena bukan "memori penduduk" dan akan dihancurkan setelah halaman disegarkan. Namun, kami dapat memberikan solusi lain, untuk menyetujui nilai puncak untuk objek ini, misalnya, ini hanya memungkinkan menyimpan 100 pasangan nilai kunci paling banyak. Ketika angka melebihi 100, sepuluh tombol yang disimpan pertama dihapus melalui operator hapus atau tidak disimpan, sehingga masalah ini dapat dihindari.
Metode HasownProperty sangat umum dalam deteksi objek. Tentu saja, siswa yang berminat juga dapat belajar tentang metode properti yang dapat dibayangkan. Ini adalah versi yang disempurnakan dari HasownProperty. Ini dapat mendeteksi sifatnya sendiri dan penghitungan properti. Artikel ini tidak akan menjelaskan secara rinci.