Dua metode didukung dalam array JS, shift () dan pop (), yang merujuk pada menghapus nilai dari sisi depan dan terakhir dari data, dan mengembalikan nilai yang dihapus. Anda akan mengerti dengan melihat contoh:
Salinan kode adalah sebagai berikut:
var arr = ['s', 'o', 'f', 'i', 's', 's', 'h'];
arr.shift (); // return 's'
arr; // Saat ini ['o', 'f', 'i', 's', 'h']
arr.pop () // return 'h'
arr // saat ini ['o', 'f', 'i', 's']
Sangat umum dalam banyak kerangka kerja JS bahwa metode memberikan Anda untuk melewati beberapa parameter, dan beberapa parameter ini dapat diabaikan. Poin -poin yang diabaikan ini mungkin yang pertama atau yang terakhir. Cara penulisan tradisional adalah dengan menentukan apakah ada parameter, atau jumlah parameter untuk menentukan nilai akhir.
Di sini, kita dapat menggunakan objek argumen dari fungsi, serta menggeser dan muncul dalam array untuk mencapai aplikasi yang fleksibel.
1. Gunakan shift
Cara mengimplementasikan metode .bind (), biarkan API FN menjadi sebagai berikut:
Salinan kode adalah sebagai berikut:
// Ruang lingkup FN terbatas pada objek
// Kecuali untuk objek, semua parameter metode BIND akan diteruskan ke FN
fn.bind (objek, param1, param2, [, paramn]);
Lihatlah contoh terlebih dahulu. Tentu saja, contoh ini mungkin lebih penting untuk penerapan panggilan dan berlaku. Namun, yang ingin kita bicarakan adalah aplikasi shift:
Salinan kode adalah sebagai berikut:
// [`.bind`] (http://www.prototypejs.org/api/function/bind) dari prototipe.js
Function.prototype.bind = function () {
var fn = ini,
args = array.prototype.slice.call (argumen),
objek = args.shift ();
return function () {
kembalikan fn.Apply (objek,
args.concat (array.prototype.slice.call (argumen)));
};
};
Kita dapat menggunakan shift ke objek argumen (objek seperti array, yang perlu dikonversi menjadi array nyata) untuk mengeluarkannya. Misalnya, metode ini terutama menggunakannya untuk memisahkan objek sebagai ruang lingkup, dan kemudian dengan cerdik meneruskan array parameter yang tersisa ke FN, yaitu, panggil fungsi yang ingin kita batas pada ruang lingkup objek.
2. Gunakan pop
Baru -baru ini, kami mencoba Seajs, mari kita ambil salah satu API sebagai contoh:
Salinan kode adalah sebagai berikut:
Tentukan (id, dependensi, panggilan balik)
Ini mendefinisikan API, ID dan dependensi modul dapat dihilangkan. Di sini, bagaimana menerapkan dukungan ini? Jika Anda menggunakan jika untuk menilai, Anda benar -benar membutuhkan jika (argumen === 1) {...} elseif ... banyak dari mereka. Tentu saja, ini terkadang memiliki manfaat (?, Pikirkan tentang itu). Di sini, kami dapat menggunakan POP untuk memfasilitasi implementasi dukungan tersebut:
Salinan kode adalah sebagai berikut:
var define = function () {
// Keluarkan panggilan balik ini
var args = [] .slice.call (argumen)
fn = args.pop ();
// Lakukan beberapa hal magis lainnya
fn.Apply (null, args)
// ...
},
callback = function () {
var args = argumen, i = 0, len = args.length;
if (len === 0) console.log ('hanya satu panggilan balik');
untuk (; i <len; i ++) {
console.log (args [i]);
}
}
// Lihat hasil eksekusi dari mereka bertiga
define (callback);
Tentukan ('Ada dua parameter', callback);
Tentukan ('Ada tiga parameter', 'halo dunia', callback);
Dua hari yang lalu, saya biasa mengutip sesuatu ketika saya menggunakan beberapa trik di JS. Meskipun saya selalu meminta diri untuk tidak terlalu tenggelam dalam kode, kode, bukan hanya JS, selalu memberi kita terlalu banyak kesenangan. Bagaimana tidak menyukainya. Ha ha.