Monolith adalah objek yang digunakan untuk membagi namespace dan mengatur beberapa atribut dan metode terkait. Jika dia bisa dipakai, dia hanya bisa dipakai sekali (dia hanya bisa menikah sekali, bukan pernikahan kedua).
Pola monolitik adalah salah satu pola paling mendasar namun berguna dalam JavaScript.
Fitur:
1. Dapat digunakan untuk membagi ruang nama untuk menghapus bahaya atau efek variabel global.
2. Gunakan teknologi bercabang untuk merangkum perbedaan antara browser.
3. Kode ini dapat diatur lebih dalam satu cara, membuatnya lebih mudah dibaca dan dipelihara.
Penulisan Dasar Mode Single-Body:
/* Pola monomer paling dasar*/ var her = {name: 'anna', sex: 'women', katakanlah: function () {// Beberapa logika pemrosesan ...}, doing: function () {// fungsi pemrosesan lainnya ...}}1. Bagilah namespace:
var box = {lebar: 0, tinggi: 0, getarea: function () {return this.width * this.width; // Akses ke objek di JS harus ditampilkan, yaitu, ini tidak dapat dihilangkan}, init: function (w, h) {// width = w; // height = h; Metode ini setara dengan mendefinisikan dua variabel global, (variabel tidak dinyatakan dengan var adalah variabel global) // Ini bukan penugasan pada lebar dan tinggi objek // berikut ini adalah yang benar ini.width = w; this.height = h;}} // kotak membagi namespace, dan variabel di namespace hanya valid di ruangSemua anggota dan metode dalam monomer di atas adalah publik, yaitu, mereka dapat diubah secara sewenang -wenang di luar monomer (tetapi mereka tidak dapat mengakses variabel lokal). Jadi mengapa monomer menyediakan namespace?
Jangan khawatir, mari kita terus lihat:
var box = {lebar: 0, tinggi: 0, // variabel monomer getarea: function () {return width * tinggi; // lebar, tinggi bukan variabel monomer, tetapi variabel global yang didefinisikan dalam init} init: function (w, h) {width = w; tinggi = h;}} init {we) {weDth = w; height = h;}}} in init = not a not = a {width = w; height = h;}} // in init = not a note = a {welg = w; height = h; h;}} {variabel a. box.getarea (); alert (init);}Karena lebar dan tinggi dalam init tidak diinisialisasi, kesalahan akan dilaporkan, jadi ubah seperti ini:
var box = {width: 0, Height: 0, getarea: function () {return width * height;}, init: function (w, h) {width = w; height = h;}} window.onload = function () {width = 0; height = 0; // atau box.init (0.0); var init = box.get.Ditemukan bahwa tidak apa -apa. Karena lebar dan tinggi yang digunakan oleh init dan getarea bukanlah variabel yang dimiliki oleh monolith, tetapi merupakan variabel global, kita dapat melakukan panggilan acak di luar monolith tanpa terpengaruh.
var box = {width: 0, tinggi: 0, getarea: function () {return width * height; // akses objek dalam js harus ditampilkan, yaitu, ini tidak dapat dihilangkan}, init: function (w, h) {width = w; height = h;}} // Lebar di sini, tinggi bukan sebenarnya a singth objek. box.getarea (); peringatan (lebar);}Dengan cara ini, akan dilaporkan bahwa kesalahan akan dilaporkan. Dapat dilihat bahwa metode kami di atas tidak membuat namespace untuk variabel global, dan variabel global membawa kita bahaya. Jadi kata teratasnya benar, mari kita verifikasi:
var box = {width: 2, tinggi: 2, getarea: function () {return this.width * this.height; / / js akses harus ditampilkan, yaitu, ini tidak dapat dihilangkan}, init: function (w, h) {this.width = w; this.height = h;}} window.onload = {this.width = w; this. // itu tidak akan mempengaruhi variabel lokal di monolit, yaitu, ketinggian namespace = 0; // itu tidak akan mempengaruhi variabel lokal di monolit, yaitu, namespace var width = box.getarea (); ware (width);}Dapat dilihat bahwa lebar dan tinggi di jendela.
2. Properti Anggota:
Meskipun tidak ada objek-berorientasi yang begitu ketat (OOP) dalam JavaScript, kita dapat menggunakan penutupan untuk meniru. Lagi pula, tidak baik untuk mengatur beberapa variabel ke publik.
var her = (function () {var name = 'anna'; var sex = 'women'; return {getarea: function () {return name + 'adalah a' + sex;}, init: function (b) {name = b;}}}) (); window.onload = function () {her.name = 'jock'; // tidak dapat mengakses peringatan (ger.getarea ()); her.init ('lous'); alert (her.getarea ());}Variabel dan metode pribadi hanya baca, sedangkan variabel dan metode publik dapat dibaca.
mengakses:
Untuk anggota pribadi, Anda dapat mengaksesnya secara langsung tanpa modifikasi apa pun sebelum mereka.
Untuk akses publik, "Ini." harus ditambahkan sebelum lingkup monomer, dan "dia." (Nama Monobody.)
3. Gunakan teknologi cabang untuk merangkum perbedaan antara browser
Catatan:
A. Pastikan untuk menggunakan penutupan untuk mencapai ikatan instan
B. Pisahkan setiap cabang dengan titik koma
C. Hal terakhir yang kembali adalah nama cabang
D. Gunakan Nama Metode Single Nama + Cabang saat menelepon;
// Gunakan teknologi percabangan monomer untuk mendefinisikan objek XHR (xmlHttpRequest), dan Anda harus menggunakan penutupan untuk mengimplementasikan var xhr = (function () {// tiga branchesvar standar = {cxhr: function () {return new xmlHtpRequest (); {cxhr: function () {return new xmlhtprequest ();}}; var Activex = {cxH: {function {) {function (); {}; var Activex = {function (); {{var Activex = {cxnew = {function) {cxhr: {function (); ActivexObject ('msxml2.xmlHttp');}}; var activexold = {cxhr: function () {return new ActivexObject ('microsoft.xmlHttp'); uji ringkasan; testoblect = cober = cabang, coba setiap metode; return apa pun yang tidak gagal. if no error was thrown }catch(e){try{testObject = activeXNew.cXHR();return activeXNew;}catch(e){try{testObject = activeXOld.cXHR();return activeXNew;}catch(e){try{testObject = activeXOld.cXHR();return activeXOld;}catch(e){throw new Error('Create the XMLHTTPREQUESTObject Gagal! ');}}}) (); Window.onload = function () {alert (xhr.cxhr ());}Di atas adalah analisis komprehensif dari model tubuh tunggal dari pola desain JavaScript yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!