JavaScript berbasis objek, dan elemen apa pun dapat dianggap sebagai objek. Namun jenis dan objeknya berbeda. Pada artikel kali ini, selain membahas beberapa ciri-ciri tipe dan objek, yang lebih penting lagi kita mempelajari cara menulis tipe yang baik dan dapat digunakan kembali. Lagi pula, jika JavaScript, bahasa skrip yang populer, dapat dienkapsulasi dengan baik dan membentuk perpustakaan tipe yang besar, maka akan sangat berarti untuk digunakan kembali.
Ada banyak artikel tentang prototipe di Internet, tetapi saya tidak pernah memahami ide intinya. Akhirnya setelah menulis banyak contoh kode, saya menyadari: prototipe hanya dapat digunakan pada tipe.
Berikut ini adalah beberapa contoh tentang tipe dan objek. Setelah membaca contoh tersebut, mungkin akan lebih mudah bagi Anda untuk memahami hubungan antara tipe dan objek:
Kode contoh | menjelaskan | |
1 | Objek.prototipe.Properti = 1; Objek.prototipe.Metode = fungsi (){ alert(1);}var obj = Objek baru();alert(obj.Property);obj.Method(); | Anda dapat menggunakan proptotipe pada tipe untuk menambahkan perilaku pada tipe tersebut. Perilaku ini hanya dapat diwujudkan pada contoh tipe tersebut. Tipe yang diperbolehkan di JS adalah Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String |
2 | var obj = Objek baru(); obj.prototype.Property = 1;//Error//Errorobj.prototype.Method = function(){ alert(1);} | Anda tidak dapat menggunakan prototipe pada sebuah instance, jika tidak, kesalahan kompilasi akan terjadi. |
3 | Objek.Properti = 1;Objek.Metode = function(){ alert(1);}alert(Object.Property);Objek.Metode(); | Anda dapat menentukan properti dan metode "statis" untuk suatu tipe dan memanggilnya langsung pada tipe tersebut. |
4 | Objek.Properti = 1;Objek.Metode = function(){ alert(1);}var obj = Objek baru();alert(obj.Property);//Errorobj.Method();//Error | Sebuah instance tidak dapat memanggil properti statis atau metode dari suatu tipe, jika tidak maka akan terjadi kesalahan objek yang tidak terdefinisi. |
5 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}var obj = new Aclass();alert(obj.Property);obj.Method(); | Contoh ini menunjukkan cara biasa untuk mendefinisikan suatu tipe dalam JavaScript |
6 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}Aclass.prototype.Property2 = 2;Aclass.prototype.Method2 = function{ alert(2);}var obj = new Aclass();alert(obj.Property2);obj.Method2(); | Prototipe dapat digunakan secara eksternal untuk menambahkan properti dan metode ke tipe kustom. |
7 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}Aclass.prototype.Property = 2;Aclass.prototype.Method = function{ alert(2);}var obj = new Aclass();alert(obj.Property);obj.Method(); | Properti atau metode tipe kustom tidak dapat diubah secara eksternal melalui prototipe. Seperti yang Anda lihat dari contoh ini: properti dan metode yang dipanggil masih merupakan hasil definisi awal. |
8 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}var obj = new Aclass();obj.Property = 2;obj.Method = function(){ alert( 2);}peringatan(obj.Properti);obj.Metode(); | Properti dapat diubah pada objek. (Ini pasti) Anda juga dapat mengubah metode pada objek. (Berbeda dari konsep berorientasi objek pada umumnya) |
9 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}var obj = new Aclass();obj.Property2 = 2;obj.Method2 = function(){ alert( 2);}peringatan(obj.Properti2);obj.Metode2(); | Anda dapat menambahkan properti atau metode ke objek |
10 | fungsi AClass(){ ini.Properti = 1; ini.Metode = fungsi() { peringatan(1);}fungsi AClass2(){ ini.Properti2 = 2; }}AClass2.prototype = AClass baru();var obj = baru AClass2();alert(obj.Property);obj.Method();alert(obj.Property2);obj.Method2(); | Contoh ini mengilustrasikan bagaimana satu tipe mewarisi dari tipe lainnya. |
11 | fungsi AClass(){ ini.Properti = 1; ini.Metode = fungsi() { peringatan(1);}fungsi AClass2(){ ini.Properti2 = 2; }}AClass2.prototype = new AClass();AClass2.prototype.Property = 3;AClass2.prototype.Method = function(){ alert(4);}var obj = new AClass2();alert(obj.Property);obj.Method(); | Contoh ini mengilustrasikan bagaimana subkelas dapat mengambil alih properti atau metode kelas induk. |
・Contoh 2: Pembatasan penggunaan prototipe
・Contoh 3: Cara mendefinisikan anggota statis pada suatu tipe
・Contoh 7: pembatasan prototipe pada anggota tipe yang didefinisikan ulang
・Contoh 10: Cara membuat satu tipe mewarisi tipe lainnya
・Contoh 11: Cara mendefinisikan ulang anggota kelas induk di subkelas
Fitur berorientasi objek yang dapat diimplementasikan JavaScript meliputi:
・Lapangan umum
・Metode Publik
・Lapangan pribadi
・Metode pribadi (bidang pribadi)
・Metode berlebihan
・Konstruktor
·Peristiwa
・ Warisan tunggal
・Subkelas mengesampingkan atribut atau metode kelas induk (menimpa)
・Properti atau metode statis (anggota statis)