


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.

Ya, teras enjin JavaScript ditulis dalam C. 1) Bahasa C menyediakan prestasi yang efisien dan kawalan asas, yang sesuai untuk pembangunan enjin JavaScript. 2) Mengambil enjin V8 sebagai contoh, terasnya ditulis dalam C, menggabungkan kecekapan dan ciri-ciri berorientasikan objek C. 3) Prinsip kerja enjin JavaScript termasuk parsing, penyusun dan pelaksanaan, dan bahasa C memainkan peranan penting dalam proses ini.

JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.


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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
