Quick actions

cmd+k|ctrl+k

Navigation

Languages

Property Accessor & Method

Snippet info

Language

JavaScript

Visibility

public

Author

tulangrusuk.ku

Created

2020-08-03T13:50:49Z

Updated

2020-08-03T14:40:18Z

// Melalui objek class kita juga dapat mengubah nilai properti seperti ini:

class Bicycle {
    // membuat properti
    constructor(manufacture, type, color, price) {
        this.manufacture = manufacture;
        this.type = type;
        this._color = color;
        this.price = price;
    }
    
    //menambahkan method info()
    info(){
        console.log(`Manufacture: ${this.manufacture}`);
        console.log(`Type: ${this.type}`);
        console.log(`Color: ${this.color}`);
        console.log(`Price: ${this.price}`);
    }
    
    get color(){
    return `Warna sepeda: ${this._color}`;
    }
    
    set color(value) {
        console.log(`Warna sepeda diubah dari ${this._color} menjadi ${value}`)
        this._color = value;
    }
}

const hifniBicycle = new Bicycle("Polygon", "MTB", "Black", "Rp4.2999.999");

hifniBicycle.info();

//mengubah nilai properti manufacture menjadi wimcycle dan menubah price nya'
hifniBicycle.manufacture = "Wimcycle";
hifniBicycle.price = "Rp2.150.000";

console.log(""); //fungsinya seperti tag <br> pada html
hifniBicycle.info();

// Dengan class kita juga dapat mengimplementasi getter/setter sebuah properti 
// menjadi sebuah method seperti ini:

console.log(""); //fungsinya seperti tag <br> pada html
console.log(hifniBicycle.color);
hifniBicycle.color = "Red"; // Mengubah nilai properti color menjadi red
hifniBicycle.info();

/* Perhatikan juga ketika kita menerapkan getter/setter pada properti class. 
Kita perlu mengubah atau membedakan penamaan properti aslinya 
dengan property accessor yang kita buat. Berdasarkan code convention
yang ada kita perlu mengubah properti asli class-nya dengan menambahkan
underscore di depan nama propertinya (_color). Tanda underscore berfungsi 
sebagai tanda bahwa properti _color tidak sebaiknya diakses langsung, 
namun harus melalui property accessor (getter/setter).  */


// =======================================================================
/* METHOD
Untuk menambahkan method pada class, kita juga cukup menuliskannya 
pada body class, tidak perlu melalui prototype seperti menggunakan 
constructor function. Sperti contoh diatas, kita meambahkan method info()
pada body class

Dengan menggunakan class, walaupun kita menuliskan method pada body class, 
namun method tersebut tetap berada pada prototype chain miliki instance yang 
terbuat. Kita bisa melihat bagaimana objek yang dibuat 
menggunakan class pada console browser.*/


INFO