Rumah  >  Artikel  >  hujung hadapan web  >  Contoh menggunakan kaedah hasOwnProperty untuk mendapatkan semula objek tindak balas ajax dalam kemahiran JS_javascript

Contoh menggunakan kaedah hasOwnProperty untuk mendapatkan semula objek tindak balas ajax dalam kemahiran JS_javascript

WBOY
WBOYasal
2016-05-16 16:28:141540semak imbas

Pelajar yang sering menggunakan carian Baidu pastinya tidak akan mengabaikan indeks lungsur kotak input. Walau bagaimanapun, keadaan yang unik menjadikan teknologi tak segerak ini menghadapi beberapa cabaran . Jurutera pengepungan mesti mengurangkan bilangan mesej ajax sebanyak mungkin. Ia mungkin terdengar tidak relevan dengan artikel ini, tetapi tidak. Pertama sekali, mari kita buat iklan percuma untuk Baidu. Masukkan perkataan "front-end" pada halaman utama Baidu dan gunakan chromebug untuk melihat respons yang dihantar dengan mudah Hasilnya dipaparkan seperti berikut:

Salin kod Kod adalah seperti berikut:

window.bdsug.sug({q:'front-end';,p:false,s:['front-end development','front-end engineer','front-end bus','front-end development engineer ','Front-end framework','front-end bus Frequency','Front-end interview questions','Front-end analysis','Front-end development tools','Front-end observation']});

Baidu cuba untuk memaparkan data lungsur dengan mengembalikan kaedah sug dengan parameter obj Apabila anda memasukkan "hujung hadapan" sekali lagi tanpa memuat semula halaman, permintaan yang serupa tidak berlaku, yang menunjukkan bahawa ia adalah objek cache. boleh ditubuhkan lebih lama diminta. Pelayan menghantar permintaan, yang boleh menjimatkan kos dengan berkesan.

Mari kita bincangkan tentang protagonis sebenar: kaedah hasOwnProperty.

Saya percaya jser tidak asing dengan hasOwnProperty Saya hanya menjual air di tepi sungai di sini.

Ia eksklusif untuk objek dan digunakan untuk menentukan sama ada atribut wujud dalam kunci objek. Ia mengembalikan nilai boolean. Berikut ialah contoh:

Salin kod Kod adalah seperti berikut:

var test0 = Array.prototype.hasOwnProperty('split'); //false, kerana kaedah split tidak wujud dalam array
var test1 = String.prototype.hasOwnProperty('split'); //true, kerana split ialah kaedah terbina dalam String object

Apabila anda mengetahui perkara ini, nampaknya ia tidak mencukupi untuk melihat kuasa hasOwnProperty, jadi mari kita buat semula contoh lungsur turun Baidu:

Salin kod Kod adalah seperti berikut:

var data = {}, saveObj = function(val){
if(data.hasOwnProperty(val)){ //Jika nilai yang diserahkan wujud dalam objek data, permintaan tidak akan dihantar
var len = data[val].panjang;
untuk(var i = 0; i < len; i ){
console.log(data[val][i]);
}
}lain{
var url = 'http://suggestion.baidu.com/su?wd=' val;
$.ajax({ //Demi kejelasan, di sini kita menggunakan ajax jquery sebagai contoh
url: url '&p=3&cb=window.bdsug.sug&sid=1421_1513_1541_1542_1582&t=1353756355137', //Parameter t terakhir ialah cap waktu
dataType: 'jsonp',
Taip: 'DAPAT',
Kejayaan : function(res){
var msg = res.data, len = msg.length;
msg == null && (msg = []);
Jika(len > 0){
data[val] = msg; //Cache hasil carian
untuk(var i = 0; i < len; i ){
console.log(msg[i]); //Cetak hasil permintaan
}
}
}, ralat : function(){
makluman('ralat');
}
});
}
};

Sesetengah rakan sekerja mempersoalkan bahawa dengan cara ini, memori yang diduduki oleh data objek cache akan meningkat apabila lebih banyak nilai utama disimpan. Kemudian saya ingin mengatakan bahawa ini tidak dapat dielakkan Untuk menyimpan permintaan sisi pelayan, anda mesti mengorbankan perkara lain, sebenarnya, ruang yang diduduki oleh objek cache biasanya boleh diabaikan kerana ia tidak "bermastautin dalam ingatan". disegarkan, Ia akan dimusnahkan. Walau bagaimanapun, kami boleh memberikan penyelesaian lain dan bersetuju dengan nilai puncak untuk objek ini Sebagai contoh, ia hanya dibenarkan untuk menyimpan 100 pasangan nilai kunci paling banyak Apabila nombor melebihi 100, padamkan sepuluh kekunci pertama yang disimpan melalui pengendali padam atau hanya bukan penyimpanan untuk mengelakkan masalah ini.

Kaedah hasOwnProperty biasanya digunakan dalam pengesanan objek Sudah tentu, pelajar yang berminat juga boleh mempelajari kaedah propertyIsEnumerable Ia adalah versi hasOwnProperty yang dipertingkatkan dan boleh mengesan sifatnya sendiri dan kebolehhitungan harta tersebut tidak akan menerangkannya secara terperinci lagi.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn