Ringkasan
Apa yang kita bicarakan ketika kita berbicara tentang pemrograman berorientasi objek?
Kami pertama kali berbicara tentang beberapa konsep: objek, kelas, enkapsulasi, warisan, polimorfisme.
Objek dan kelas adalah dasar dari objek yang berorientasi, dan enkapsulasi, warisan dan polimorfisme adalah tiga fitur utama dari pemrograman yang berorientasi objek.
JavaScript menyediakan objek tetapi tidak memiliki kelas, dan tidak dapat secara eksplisit mendefinisikan kelas seperti C#.
Namun, fungsi fungsi JavaScript sangat fleksibel, salah satunya adalah konstruktor, yang dapat mengimplementasikan "kelas" dalam kombinasi dengan konstruktor dan objek prototipe.
Konsep Objek dan Kelas
Obyek
"Objek" adalah konsep yang sangat penting dalam pemrograman yang berorientasi objek. Suatu objek adalah deskripsi "benda" (seseorang atau sesuatu).
Orang -orang dan hal -hal datang dari kehidupan nyata, dan pemahaman kita tentang dunia nyata adalah pemahaman kita tentang orang dan hal -hal.
Di bidang pemrograman, kode adalah abstrak untuk orang biasa, dan penerapan kode adalah untuk menyelesaikan masalah dunia nyata dengan lebih baik.
Selama fase analisis dan desain, konsep "objek" dapat lebih mencerminkan masalah dunia nyata.
Sebaliknya, kode berisi beberapa logika, yang digunakan untuk menggambarkan bisnis. Bisnis ini berisi beberapa pengetahuan bisnis. Pengetahuan bisnis dirangkum melalui pemahaman dan analisis dunia nyata. Masalah -masalah ini terdiri dari "objek" di dunia nyata.
Objek berisi fitur dan perilaku. Dalam istilah OOP, fitur adalah atribut objek, dan perilaku adalah metode objek.
baik
Di dunia nyata, objek serupa dapat dikelompokkan sesuai dengan standar tertentu. Misalnya, "kolibri" dan "elang" keduanya dibagi menjadi burung. Burung bukan objek spesifik. Mereka adalah sebuah konsep yang dirangkum oleh orang -orang setelah menganalisis karakteristik dan perilaku yang serupa berdasarkan pada burung -burung tertentu seperti "kolibri" dan "elang". Kelas setara dengan templat, dan kami dapat membuat objek spesifik yang berbeda berdasarkan templat ini.
Dalam C#, kita dapat mendefinisikan burung.
/// <summary> //// Birds /// </summary> Bird kelas publik {public void fly () {console.writeLine ("I Can Fly!"); }}Meskipun JavaScript adalah bahasa pemrograman yang berorientasi objek, ia tidak memberikan dukungan sintaks untuk kelas.
Dalam JavaScript, semuanya didasarkan pada objek. Bahkan "prototipe" yang akan kita bicarakan nanti adalah objek. Warisan dan penggunaan kembali JavaScript juga diimplementasikan melalui prototipe.
Namun, menggabungkan konstruktor dan objek prototipe dapat mengimplementasikan "kelas" JavaScript.
Konstruktor
Sebelumnya, kami menggunakan array baru () untuk membuat array dan menggunakan objek baru () untuk membuat objek. Array () dan Object () adalah dua konstruktor bawaan dalam JavaScript. Meskipun JavaScript tidak menyediakan kelas, kita dapat memahami array dan objek sebagai konsep "kelas".
Perlu dicatat bahwa "kelas" JavaScript diimplementasikan oleh konstruktor.
Tentukan konstruktor
Konstruktor juga merupakan fungsi, dan tidak ada perbedaan sintaks antara mendefinisikan konstruktor dan fungsi lainnya.
Satu -satunya perbedaan adalah bahwa huruf pertama dari konstruktor harus dikapitalisasi, yang juga merupakan spesifikasi pemrograman JavaScript.
Berikut ini mendefinisikan konstruktor seseorang (), yang dapat kita pahami sebagai kelas orang.
function person () {console.log ('I Am Keepfool.');}"Kelas" dan konstruktor JavaScript didefinisikan pada saat yang sama. Saat mendefinisikan "kelas" dalam JavaScript, konstruktor didefinisikan pada saat yang sama.
Menggunakan konstruktor
JavaScript menggunakan kelas dengan cara yang sama seperti C#, dengan kata kunci baru diikuti oleh konstruktor.
var p = orang baru ();
Tentukan atribut dan metode
Sekarang kami telah mendefinisikan kelas orang, kami dapat menambahkan beberapa properti dan metode ke kelas orang.
Tentukan atribut
Saat berbicara tentang objek JavaScript, kita berbicara tentang pengaturan properti dan akses objek.
Kode ini menunjukkan dua cara untuk mendefinisikan properti objek:
var cat = {color: 'black'}; cat.name = 'tom'; console.log (cat.color); console.log (cat.name);Gunakan ini untuk mendefinisikan atribut
Metode definisi atribut dari kelas JavaScript agak berbeda. Gunakan kata kunci ini untuk mendefinisikan atribut dalam konstruktor:
function person (name) {this.name = name;}• Baris kode pertama mendefinisikan kelas orang dan mendefinisikan konstruktor.
• Baris kedua kode mendefinisikan atribut nama.
Buat dan gunakan objek
2 baris kode berikut membuat dua objek kelas orang
var p1 = orang baru ('James'); var p2 = orang baru ('Cury');Output p1.name dan p2.name in chrome console
P1 dan P2 adalah dua objek yang berbeda, memodifikasi p1.name tidak akan mempengaruhi P2.name.
p1.name = 'LeBron James';
Tentukan metode
Pertama, mari kita membedakan istilah "fungsi" dan "metode". "Fungsi" adalah unit independen, sedangkan "Metode" tergantung pada keberadaan kelas sebagai subjek.
Gunakan ini untuk mendefinisikan metode
Dalam JavaScript, metode kelas adalah untuk menentukan fungsi dalam konstruktor, dan menggunakan kata kunci ini untuk menentukan metode dalam konstruktor:
function person (name) {// Tentukan atribut this.name = name; // tentukan metode this.sayhello = function () {return 'hello, saya' + this.name;}}Cara menggunakan
Sebut metode Sayhello () masing -masing objek P1 dan P2 di konsol Chrome
Atribut Konstruktor
Ketika suatu objek dibuat, properti khusus secara otomatis ditugaskan ke objek oleh JavaScript, dan properti ini adalah properti konstruktor.
Masukkan p1.constructor di konsol Chrome dan Anda dapat melihat bahwa properti konstruktor dari objek P1 menunjuk ke suatu fungsi.
Lihatlah konten fungsi ini, bukankah ini konstruktor orang ()?
Ini berarti bahwa kita juga dapat membuat objek melalui properti P1.Constructor,
var p3 = p1.constructor baru ('Steve Nash');Baris kode ini menjelaskan sebuah kalimat: "Saya tidak peduli bagaimana objek P1 dibuat, tetapi saya ingin objek lain dibuat seperti P1!"
Menggunakan instance dari operator di konsol chrome, Anda dapat melihat bahwa P1, P2, dan P3 adalah semua contoh kelas orang
Juga, ketika kita membuat objek dengan cara {} , konstruktor objek () sebenarnya dipanggil.
var o = {};Baris kode ini menyatakan suatu objek. Meskipun kami tidak mengatur properti dan metode apa pun, mesin JavaScript menetapkan atribut konstruktor secara default.
o.constructor menunjuk ke konstruktor objek (), [native code] menunjukkan bahwa objek () adalah fungsi bawaan dalam JavaScript.
Objek prototipe
Dalam JavaScript, saat mendefinisikan fungsi, fungsi akan memiliki atribut prototipe, dan konstruktor tidak terkecuali.
Gambar berikut menunjukkan bahwa properti prototipe orang () konstruktor adalah objek, yang termasuk dalam fungsi , dan kami menyebut properti ini sebagai objek prototipe.
Dari perspektif kelas orang, kita juga dapat memahami bahwa atribut prototipe milik kelas orang.
Pada saat yang sama, contoh kelas orang tidak memiliki atribut prototipe. P1.Prototipe pada gambar di atas tidak terdefinisi, yang berarti bahwa atribut prototipe dibagikan, yang sedikit seperti atribut statis di C#.
Pengaturan prototipe
Karena prototipe adalah objek, Anda dapat menambahkan properti dan metode ke dalamnya.
Mendefinisikan properti dan metode pada properti prototipe suatu fungsi tidak berbeda dari pengaturan properti dan metode objek biasa.
Kode berikut mendefinisikan properti dan metode untuk orang. Prototype.
function person (name) {this.name = name; this.sayhello = function () {return 'hello, i am' + this.name;}} // mendefinisikan properti dan metode pada prototipe konstruktor Prototipe Person.prototype.height = 176; orang ini. Orang ('James');Menggunakan prototipe
Properti dan metode prototipe yang ditentukan secara pribadi. Prototipe dapat digunakan secara langsung oleh contoh kelas orang dan masih digunakan dalam bentuk object.property .
Perlu dicatat bahwa name dan sayHello() adalah contoh milik kelas orang, sementara height dan run() adalah contoh yang bukan milik kelas orang.
Kiat: Anda dapat memeriksa apakah objek berisi properti atau metode tertentu melalui metode HasownProperty.
Atribut Prototipe
Contoh kelas orang dapat menggunakan kedua properti di kelas orang dan properti secara pribadi. Prototipe.
Jadi apa perbedaan antara sifat -sifat kelas orang dan sifat orang. Prototipe?
Pertama, kita dapat memahami sifat dan metode di kelas orang sebagai "properti instan".
Karena prototipe dibagikan, kami dapat memahami sifat dan metode dalam prototipe sebagai "properti bersama".
Perbedaan antara "atribut instan" dan "atribut bersama" terutama tercermin dalam kinerja.
Setiap kali contoh seseorang dibuat, salinan atribut nama dan metode sayhello () akan dihasilkan, dan atribut tinggi dan metode run () akan membagikan salinan semua instance.
Karena itu, ini berarti bahwa metode Sayhello () dapat disebutkan dalam prototipe.
Selain itu, tinggi instance orang yang berbeda mungkin berbeda, jadi harus lebih masuk akal untuk memasukkannya ke dalam kelas orang.
function person (name, height) {this.name = name; this.height = height;} person.prototype.sayhello = function () {return 'hello, i am' + this.name + ', tinggi saya adalah' + this.height + 'cm.';} person.prototype.run = () {{) {{{) {{saya '; orang baru ('James', 203); var p2 = orang baru ('Cury', 190);Ringkasan Implementasi Kelas
JavaScript tidak memiliki kelas, tetapi konstruktor dapat mengimplementasikan "kelas".
Menurut spesifikasi pemrograman JavaScript, huruf pertama konstruktor harus dikapitalisasi.
Properti dan metode "kelas" didefinisikan dalam konstruktor dalam metode ini.
Saat pembuatan objek dibuat, JavaScript menetapkan atribut konstruktor ke objek. Atribut konstruktor adalah referensi ke fungsi konstruktor objek.
Fungsi sudah memiliki atribut prototipe saat didefinisikan, dan atribut prototipe juga merupakan objek.
Prototipe dibagikan, dan sifat dan metode yang ditentukan pada prototipe dapat digunakan oleh contoh "kelas".
Jika sifat atau metode dapat didefinisikan pada prototipe, jangan tentukannya pada konstruktor. Menggunakan prototipe dapat mengurangi overhead memori.
Artikel di atas tentang JavaScript OOP - Detail Implementasi Kelas adalah semua konten yang telah saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.