


Pelajari kemahiran pengaturcaraan berorientasikan objek Javascript encapsulation_javascript
Javascript ialah bahasa berasaskan objek dan hampir semua yang anda temui adalah objek. Walau bagaimanapun, ia bukan bahasa pengaturcaraan berorientasikan objek (OOP) sebenar kerana tiada kelas dalam sintaksnya.
Jadi, jika kita ingin merangkum "harta" dan "kaedah" ke dalam objek, atau menjana objek contoh daripada objek prototaip, apakah yang perlu kita lakukan?
1. Mod penjanaan objek asal
Katakan kita menganggap kucing sebagai objek, yang mempunyai dua sifat: "nama" dan "warna".
var Cat = { name : '', color : '' }
Sekarang, kita perlu menjana dua objek contoh berdasarkan spesifikasi (skema) objek prototaip ini.
var cat1 = {}; // 创建一个空对象 cat1.name = "大毛"; // 按照原型对象的属性赋值 cat1.color = "黄色"; var cat2 = {}; cat2.name = "二毛"; cat2.color = "黑色";
Baiklah, ini adalah enkapsulasi paling mudah, merangkum dua sifat ke dalam objek. Walau bagaimanapun, cara penulisan ini mempunyai dua kelemahan Pertama, jika lebih banyak contoh dihasilkan, ia akan menjadi sangat menyusahkan untuk menulis, kedua, tidak ada cara untuk melihat hubungan antara contoh dan prototaip.
2. Penambahbaikan kepada mod asal
Kita boleh menulis fungsi untuk menyelesaikan masalah pertindihan kod.
function Cat(name,color){ return { name:name, color:color } }
Kemudian menjana objek contoh adalah bersamaan dengan memanggil fungsi:
var cat1 = Cat("大毛","黄色"); var cat2 = Cat("二毛","黑色");
Masalah kaedah ini ialah tiada kaitan intrinsik antara cat1 dan cat2, dan ia tidak dapat menggambarkan bahawa ia adalah contoh objek prototaip yang sama.
3. Corak pembina
Untuk menyelesaikan masalah menjana contoh daripada objek prototaip, Javascript menyediakan corak pembina (Pembina).
Apa yang dipanggil "pembina" sebenarnya adalah fungsi biasa, tetapi pembolehubah ini digunakan secara dalaman. Menggunakan pengendali baharu pada pembina akan menjana contoh, dan pembolehubah ini akan terikat pada objek contoh.
Sebagai contoh, objek prototaip kucing kini boleh ditulis seperti ini,
function Cat(name,color){ this.name=name; this.color=color; }
Kini kami boleh menjana objek contoh.
var cat1 = new Cat("大毛","黄色"); var cat2 = new Cat("二毛","黑色"); alert(cat1.name); // 大毛 alert(cat1.color); // 黄色
Pada masa ini, cat1 dan cat2 secara automatik akan mengandungi atribut pembina yang menunjuk kepada pembinanya.
alert(cat1.constructor == Cat); //true alert(cat2.constructor == Cat); //true
Javascript juga menyediakan operator instanceof untuk mengesahkan hubungan antara objek prototaip dan objek instance.
alert(cat1 instanceof Cat); //true alert(cat2 instanceof Cat); //true
4. Masalah dengan corak pembina
Kaedah pembina mudah digunakan, tetapi terdapat masalah membazir memori.
Sila lihat, kami kini menambah atribut tidak boleh ubah "jenis" (jenis) pada objek Cat, dan kemudian menambah kaedah makan (makan tikus). Kemudian, objek prototaip Cat menjadi seperti berikut:
function Cat(name,color){ this.name = name; this.color = color; this.type = "猫科动物"; this.eat = function(){alert("吃老鼠");}; }
Gunakan kaedah yang sama untuk menjana tika:
var cat1 = new Cat("大毛","黄色"); var cat2 = new Cat ("二毛","黑色"); alert(cat1.type); // 猫科动物 cat1.eat(); // 吃老鼠
Pada zahirnya, nampaknya tiada masalah, tetapi sebenarnya ada keburukan besar dalam melakukan ini. Iaitu, untuk setiap objek contoh, atribut jenis dan kaedah eat() mempunyai kandungan yang sama Setiap kali kejadian dijana, ia mesti menduduki lebih banyak memori untuk kandungan berulang. Ini tidak mesra alam dan tidak cekap.
alert(cat1.eat == cat2.eat); //false
Bolehkah atribut jenis dan kaedah eat() dijana sekali sahaja dalam ingatan, dan kemudian semua kejadian menghala ke alamat memori tersebut? Jawapannya ya.
5. Mod prototaip
Javascript menetapkan bahawa setiap pembina mempunyai atribut prototaip yang menunjuk ke objek lain. Semua sifat dan kaedah objek ini akan diwarisi oleh contoh pembina.
Ini bermakna kita boleh mentakrifkan sifat dan kaedah tidak berubah tersebut secara langsung pada objek prototaip:
function Cat(name,color){ this.name = name; this.color = color; } Cat.prototype.type = "猫科动物"; Cat.prototype.eat = function(){alert("吃老鼠")};
Kemudian, jana tika itu.
var cat1 = new Cat("大毛","黄色"); var cat2 = new Cat("二毛","黑色"); alert(cat1.type); // 猫科动物 cat1.eat(); // 吃老鼠
Pada masa ini, atribut jenis dan kaedah eat() bagi semua kejadian sebenarnya adalah alamat memori yang sama, menunjuk ke objek prototaip, sekali gus meningkatkan kecekapan pengendalian.
alert(cat1.eat == cat2.eat); //true
6. Kaedah pengesahan mod Prototaip
Untuk bekerjasama dengan atribut prototaip, Javascript mentakrifkan beberapa kaedah tambahan untuk membantu kami menggunakannya. ,
6.1 isPrototypeOf()
Kaedah ini digunakan untuk menentukan hubungan antara objek proptotaip tertentu dan kejadian.
alert(Cat.prototype.isPrototypeOf(cat1)); //true alert(Cat.prototype.isPrototypeOf(cat2)); //true
6.2 hasOwnProperty()
Setiap objek contoh mempunyai kaedah hasOwnProperty(), yang digunakan untuk menentukan sama ada harta tertentu ialah harta tempatan atau harta yang diwarisi daripada objek prototaip.
alert(cat1.hasOwnProperty("name")); // true alert(cat1.hasOwnProperty("type")); // false
6.3 dalam pengendali
Operator dalam boleh digunakan untuk menentukan sama ada suatu kejadian mengandungi atribut tertentu, sama ada ia adalah atribut tempatan atau tidak.
alert("name" in cat1); // true alert("type" in cat1); // true
in juga boleh digunakan untuk melintasi semua sifat objek.
for(var prop in cat1) { alert("cat1["+prop+"]="+cat1[prop]); }
Di atas adalah mengenai enkapsulasi javascript Saya harap ia akan membantu pembelajaran semua orang.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus. 1. Apakah itu WebSocket? WebSocket ialah kaedah dupleks penuh pada sambungan TCP tunggal.

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan

Menurut berita dari laman web ini pada 17 April, TrendForce baru-baru ini mengeluarkan laporan, mempercayai bahawa permintaan untuk produk platform Blackwell baharu Nvidia adalah menaik, dan dijangka memacu jumlah kapasiti pengeluaran pembungkusan CoWoS TSMC meningkat lebih daripada 150% pada 2024. Produk platform baharu NVIDIA Blackwell termasuk GPU siri B dan kad pemecut GB200 yang menyepadukan CPU GraceArm NVIDIA sendiri. TrendForce mengesahkan bahawa rantaian bekalan pada masa ini sangat optimistik tentang GB200, dengan penghantaran dijangka melebihi satu juta unit pada 2025, menyumbang 40-50% daripada GPU mewah Nvidia. Nvidia merancang untuk menyampaikan produk seperti GB200 dan B100 pada separuh kedua tahun ini, tetapi pembungkusan wafer huluan mesti terus menggunakan produk yang lebih kompleks.

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Laman web ini melaporkan pada 9 Julai bahawa pemproses siri "Strix" seni bina AMD Zen5 akan mempunyai dua penyelesaian pembungkusan StrixPoint yang lebih kecil akan menggunakan pakej FP8, manakala StrixHalo akan menggunakan pakej FP11. Sumber: sumber videocardz @Olrak29_ Pendedahan terbaru ialah saiz pakej FP11 StrixHalo ialah 37.5mm*45mm (1687 milimeter persegi), yang sama dengan saiz pakej LGA-1700 bagi CPU Intel AlderLake dan RaptorLake. Phoenix APU terbaru AMD menggunakan penyelesaian pembungkusan FP8 dengan saiz 25*40mm, yang bermaksud bahawa StrixHalo's F
