Kita tahu bahwa di JS, tidak ada konsep kelas. Semua objek instance dari suatu atribut mewarisi kelas dari objek prototipe yang sama, sehingga objek prototipe adalah inti dari kelas.
Kelas adalah abstraksi suatu objek, dan suatu objek adalah instance konkret dari suatu kelas. Kelas abstrak dan tidak menempati memori, sementara objek adalah ruang penyimpanan yang konkret dan menempati ruang penyimpanan. --- Ensiklopedia Baidu
Persyaratan JavaScript awal sangat sederhana, pada dasarnya ditulis sebagai fungsi, diikuti oleh penulisan yang berorientasi pada proses. Kemudian, ide-ide pengembangan yang berorientasi objek secara bertahap diperkenalkan, dan kemudian mereka perlahan-lahan ditulis ke dalam kelas.
Dalam JS, esensi penulisan ke dalam kelas pada dasarnya adalah konstruktor + prototipe. Di bawah ini, mari kita bahas beberapa cara untuk menulis kelas JS:
Metode konstruktor
/*** Kelas orang: Tentukan seseorang, dengan atribut nama dan metode getName*/<script> function person (name) {this.name = name; this.getName = function () {return this.name; }} // Kami instantiate beberapa objek di sini var p1 = orang baru ("trigkit4"); var p2 = orang baru ("mike"); console.log (P1 instance dari orang); // true console.log (p2 instance dari person); // true </script>Dari output konsol di atas, kita dapat melihat bahwa P1 dan P2 memang merupakan objek contoh dari kelas orang. Di sisi kiri instance dari operator adalah objek kelas yang akan dideteksi, dan di sisi kanan adalah konstruktor kelas yang mendefinisikan kelas. Di sini, instance dari digunakan untuk mendeteksi apakah objek P1 milik kelas orang.
Keuntungan dari metode ini adalah bahwa kita dapat membuat berbagai instance objek sesuai dengan parameter. Kerugiannya adalah bahwa setiap kali kita membangun objek instan, metode getName akan dihasilkan, menghasilkan limbah memori.
Kita dapat menggunakan fungsi eksternal alih -alih metode kelas, sehingga setiap objek berbagi metode yang sama. Kelas yang ditulis ulang adalah sebagai berikut:
// fungsi eksternal <script> function getName () {return this.name; } function person (name) {this.name = name; this.getName = getName; //} </script>Metode prototipe
<script> function person () {}; Person.prototype.name = "trigkit4"; // Properti kelas ditempatkan pada prototipe person.prototype.getName = function () {return "I'm" + this.name; } var p1 = orang baru (); var p2 = orang baru (); console.log (p1.name); // trigkit4 console.log (p2.getname ()); // saya trigkit4 </script>Kerugian dari metode prototipe adalah bahwa instance objek tidak dapat dibangun melalui parameter (umumnya sifat masing -masing objek berbeda). Keuntungannya adalah bahwa semua instance objek berbagi metode getName (relatif terhadap metode konstruktor), dan tidak ada limbah memori.
Konstruktor + Prototipe
Mengambil keuntungan dari dua yang pertama:
A. Gunakan konstruktor untuk mendefinisikan atribut kelas (bidang).
B. Gunakan prototipe untuk menentukan metode kelas.
<script> function person (name) {this.name = name; } // Fitur prototipe memungkinkan instance objek untuk berbagi metode getName person.prototype.getName = function () {return "I'm" + this.name; } </script>Dengan cara ini, kita dapat membuat objek dengan atribut yang berbeda, dan membiarkan contoh objek berbagi metode tanpa menyebabkan limbah memori.
Untuk membuat kode JS lebih kompak, kami memindahkan kode metode prototipe ke dalam kawat gigi orang fungsi.
<script> function person (name) {this.name = name; Person.prototype.getName = function () {return name; // this.name tidak cocok}} var p1 = orang baru ('trigkit4'); console.log (p1.getname ()); // trigkit4 </script>Di sini, kita perlu mengetahui beberapa metode untuk mendefinisikan kelas, selain konstruktor di atas, ada juga:
Metode Object.Create ()
Dengan metode ini, "kelas" adalah objek, bukan fungsi.
var person = {name: "trigkit4", usia: 21, run: function () {waspada ("Saya suka menjalankan"); }}Kemudian, gunakan Object.Create () secara langsung untuk menghasilkan instance tanpa menggunakan yang baru.
var p1 = objek.create (orang); waspada (p1.age); // 21 p1.run (); // Saya suka berlari
Metode ini lebih sederhana dari "metode konstruktor", tetapi tidak dapat mengimplementasikan atribut pribadi dan metode pribadi, dan data tidak dapat dibagi antara objek instance, sehingga simulasi "kelas" tidak cukup komprehensif.
Metode CreateNew ()
Metode ini tidak memerlukan ini dan prototipe. Ini adalah menggunakan objek untuk mensimulasikan kelas, kemudian mendefinisikan konstruktor createNew () di kelas, dan kemudian mendefinisikan objek instan dalam createNew (), dan menggunakan objek instan ini sebagai nilai pengembalian.
<script> var person = {createNew: function () {var person = {}; person.name = "trigkit4"; person.run = function () {alert ("Saya suka menjalankan"); }; orang yang kembali; }} </script>Saat menggunakannya, hubungi metode CreateNew () untuk mendapatkan objek instan.
var p1 = person.createNew (); p1.run (); // Saya suka berlari
Metode penulisan ini sebenarnya sangat mirip dengan metode penulisan literal objek, kecuali bahwa yang satu dipisahkan oleh koma dan yang lainnya dipisahkan oleh titik koma.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.