Saya melihat ini di sebuah plugin:
var options = $.extend(defaults, options);
Bagaimana cara kerjanya?
Apa yang extend()
dilakukannya?
jquery
jquery-plugins
Todd Terry
sumber
sumber
Jawaban:
Beberapa Parameter
Dokumentasi tidak tepat dalam menjelaskan cara kerja ekstensi, jadi saya menjalankan sedikit tes:
(
console.log
Fungsi ini dimaksudkan untuk bekerja di Firebug; ganti dengan alert () atau beberapa fungsi keluaran lainnya jika Anda mau).Hasilnya adalah:
Dengan ini kita dapat melihat bahwa jQuery.extend ():
Ini berguna untuk menggabungkan pengguna dan objek opsi default bersama-sama untuk mendapatkan satu set lengkap opsi:
Perhatikan bahwa "null" adalah nilai yang valid untuk ditimpa, tetapi "tidak ditentukan" tidak. Anda mungkin bisa memanfaatkan ini.
Hasil dalam:
Parameter Tunggal
Jika Anda meneruskan hanya satu objek ke
jQuery.extend()
, maka jQuery mengasumsikan bahwajQuery
objek itu sendiri adalah parameter "pertama" (yaitu: yang akan dimodifikasi), dan objek Anda adalah "yang kedua" (yaitu: yang akan ditambahkan ke yang pertama) . Begitu:Hasil dalam:
sumber
{zed: 'dark'}
daripada2
dan Anda tetapkanr.baz.zed = 'light'
, apa nilainyab.baz.zed
? yaitu, apakah properti disalin atau digabungkan dengan referensi?b.baz.zed
akanlight
- yaitu nilai digabungkan dengan referensi. lihat biolaIni menggabungkan konten dari satu objek ke objek lainnya . Jika kita melewatkan dua objek, properti objek kedua ditambahkan ke objek pertama / parameter pertama
Sekarang object1 berisi properti object2
Jika kita ingin menggabungkan dua objek , maka kita perlu melewatkan objek kosong pada parameter pertama
Sekarang newObject berisi properti object1 dan object2 .
sumber
Dari jQuery Documentation
Dalam konteks plugin: Jika pengguna tidak menyetel parameter opsional untuk fungsi tersebut, maka nilai default akan digunakan.
sumber
Bagaimana cara memperpanjang () bekerja di jQuery? [Terselesaikan]
jQuery memiliki salinan dalam dan salinan ringan. Boolean pertama memutuskannya, true untuk deep dan false untuk light.
Sebagai contoh:
jQuery.extend (false, {'a': {'a1': 1}}, {'a': {'a2': 2}})
hasilnya akan menjadi: {'a': {'a2': 2}} karena ini adalah salinan ringan bandingkan saja level 1.
jQuery.extend (true, {'a': {'a1': 1}}, {'a': {'a2': 2}})
hasilnya akan menjadi: {'a': {'a1': 1, 'a2': 2}} Ini adalah deep copy dengan berbagai level objek (seperti level array)
jQuery.extend (a, b, c) dengan a, b, c adalah object atau array. Flow overrite akan menjadi b-> a, c -> a (b overrite a, c override a ...) fungsi ini akan mengembalikan nilai a dan juga perubahan.
Contoh Lanjutan:
jQuery.extend ({'number_param': 1})
Jika Anda hanya melewati satu parameter. jQuery akan memperluas dirinya sendiri. console.log (jQuery ['number_param']) akan menampilkan 1.
jQuery.extend (1, {'number_param': '2'}); Contoh ini tidak menambahkan jQuery itu sendiri. Parameter pertama harus boolean. Dalam hal ini, ini akan mengembalikan {'number_param': '2'} dan jQuery tidak diperbarui.
jQuery.extend (a, b, c, d, e, f); Penggabungan pesanan akan menjadi. b -> a, c -> a, d -> a, e -> a, f -> a (b menimpa a, c menimpa a ...). Dan hasilnya akan menjadi a.
dengan a = {'p': 1}. jQuery.extend (a, {'p': 2}, {'p': 3}, {'p': 4}, {'p': 5}) akan mengembalikan a, dan a = {'p': 6}. Parameter angka yang lolos ke fungsi ini tidak terbatas.
sumber
Tujuannya adalah untuk memperluas objek yang sudah ada. Misalnya, jika kita memiliki objek template dan ingin memperluasnya dengan menambahkan lebih banyak properti atau menimpa properti yang sudah ada, jquery expand dapat berguna.
};
sekarang jika kita ingin memperpanjangnya,
$.extend(true, {"color":"red"}, carObjectTemplate, {"model": 'amaze'});
itu akan memberi kita output, memperluas carObjectTemplate dan menambahkanParameter boolean pertama benar / salah adalah untuk menunjukkan apakah kita membutuhkan salinan yang dalam atau dangkal
sumber
Itu persis seperti ini
Selengkapnya di jQuery.extend ()
sumber