0

Class

 


Class adalah hal yang sangat penting dalam pemrograman berorientasi objek. Hal itu karena class menyediakan informasi tentang suatu object. Jadi dapat dikatakan object adalah instance dari sebuah class. Class sendiri dalam paradigma OOP secara teknis merupakan sebuah blueprint dalam mendefinisikan karakteristik dari sebuah objek. Sebagai contoh, misalkan terdapat blueprint untuk mendefinisikan objek Mail. Yang mana sms dan postman adalah object dari class Mail.

Nama ClassMail
Karakteristikpengirim, penerima, isi pesan
Kapabilitas/aksikirim pesan, terima pesan

Di dalam sebuah class, dapat terdiri dari properti dan method. Properti merupakan karakteristik dari class, sedangkan method adalah kapabilitas atau kemampuan yang dimiliki oleh class.

Nah, untuk penulisan class di JavaScript sendiri bisa menggunakan dua cara, yakni melalui sintaks function ataupun class.

Mari kita lihat dulu cara membuat class menggunakan sintaksis function.

  1. function Mail() {
  2. this.from = 'pengirim@dicoding.com';
  3. };
  4.  
  5. Mail.prototype.sendMessage = function(msg, to) {
  6.   console.log(`you send: ${msg} to ${to} from ${this.from}`);
  7. };
  1. // pemanggilan
  2.  
  3. const mail1 = new Mail();
  4. mail1.sendMessage('hallo', 'penerima@dicoding.com');
  5.  
  6. /**
  7. output:
  8. you send: hallo to penerima@dicoding.com from pengirim@dicoding.com
  9. **/

Perbedaan:

Cara pertama memiliki 2 pendekatan:

  • Penulisan method menggunakan prototype
  • Penulisan method sebagai sebuah properti secara umum

Cukup berbeda dengan bahasa pemrograman lain pada umumnya, JavaScript memiliki konsep bernama prototype. Prototype adalah properti internal yang akan selalu ada ketika sebuah objek dibuat. Dari kedua pendekatan tersebut, pemanggilan terhadap properti dapat dilakukan dengan cara yang sama. Namun, penerapan prototype lebih dianjurkan. Lihatlah sintaksis di bawah ini.

  1. // menggunakan prototype
  2. const mail = new Mail();
  3. mail.hasOwnProperty('sendMessage');
  4. // hasilnya = false
  5.  
  6. --------
  7.  
  8. // tanpa prototype
  9. const mail = new Mail();
  10. mail.hasOwnProperty('sendMessage');
  11. // hasilnya = true

Ketika kita meng-instantiate objek-objek lain, objek yang menggunakan prototype tidak meng-copy atribut sendMessage ke setiap objek-objek. Berbeda ketika kita tidak menggunakan prototype, semua attribute di-copy ke setiap objek. Dengan demikian, penggunaan prototype dapat menghemat alokasi memori yang digunakan.

Lanjut ke cara kedua, yakni menggunakan sintaksis class.

  1. // Cara 2
  2. class Mail {
  3.     constructor() {
  4.         this.from = 'pengirim@dicoding.com';
  5.     }
  6.  
  7.     sendMessage(msg, to) {
  8.         console.log(`you send: ${msg} to ${to} from ${this.from}`);
  9.     };
  10. }
  11.  
  12. const mail1 = new Mail();
  13. mail1.sendMessage('hallo', 'penerima@dicoding.com');
  14.  
  15. /**
  16. output:
  17. you send: hallo to penerima@dicoding.com from pengirim@dicoding.com
  18. **/

Cara kedua pada dasarnya menggunakan prototype, penggunaan sintaksis class pada javascript hanyalah syntactic sugar dari prototype itu sendiri. Demikianlah cara umum yang digunakan untuk menuliskan dan menginstansiasi objek dari sebuah Class.

Posting Komentar
Theme
Share
Additional JS