Fungsi super() di JavaScript digunakan untuk mengakses dan memanggil metode dari kelas induk dalam kelas turunan. Fungsi ini digunakan dalam konstruktor kelas turunan untuk memanggil konstruktor kelas induk dan menginisialisasi properti kelas induk.
Berikut ini adalah sintaks fungsi ‘super()‘:
super([arguments]);
Di mana:
- ‘
arguments‘ adalah argumen yang akan diteruskan ke konstruktor kelas induk.
Berikut ini adalah contoh penggunaan fungsi ‘super()‘:
class ParentClass {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
class ChildClass extends ParentClass {
constructor(name, age) {
super(name);
this.age = age;
}
greet() {
super.greet();
console.log(`I am ${this.age} years old.`);
}
}
const child = new ChildClass('John', 30);
child.greet();
Dalam contoh ini, kelas ChildClass mewarisi dari kelas ParentClass. Konstruktor kelas ChildClass memanggil konstruktor kelas ParentClass menggunakan fungsi super() dan meneruskan argumen name. Konstruktor kelas ChildClass juga menginisialisasi properti age.
Metode greet() di kelas ChildClass mengakses dan memanggil metode greet() di kelas ParentClass menggunakan fungsi super(). Metode greet() di kelas ChildClass kemudian memanggil metode greet() di kelas ParentClass dan mencetak pesan tambahan.
fungsi super() sangat berguna untuk mengakses dan memanggil metode dari kelas induk dalam kelas turunan. Fungsi ini memungkinkan kita untuk menggunakan kembali kode dari kelas induk dan menghindari duplikasi kode.
function super() tanpa argument
Jika fungsi super() dipanggil tanpa argumen, maka fungsi tersebut akan memanggil konstruktor dari kelas induk tanpa meneruskan argumen apa pun. Hal ini biasanya digunakan ketika konstruktor kelas induk tidak memerlukan argumen apa pun.Berikut ini adalah contoh penggunaan fungsi super() tanpa argumen:
class ParentClass {
constructor() {
console.log('ParentClass constructor called.');
}
greet() {
console.log('Hello from ParentClass.');
}
}
class ChildClass extends ParentClass {
constructor() {
super();
console.log('ChildClass constructor called.');
} greet() {
super.greet();
console.log('Hello from ChildClass.');
}
}
const child = new ChildClass(); child.greet();
class ParentClass { constructor() { console.log('ParentClass constructor called.');
}
greet() { console.log('Hello from ParentClass.');
}
}
class ChildClass extends ParentClass { constructor() { super(); console.log('ChildClass constructor called.'); } greet() { super.greet(); console.log('Hello from ChildClass.'); }}
const child = new ChildClass();child.greet();
Dalam contoh ini, konstruktor kelas ParentClass tidak memerlukan argumen apa pun, sehingga fungsi super() dipanggil tanpa argumen dalam konstruktor kelas ChildClass.Perlu diingat bahwa jika konstruktor kelas induk memerlukan argumen, maka fungsi super() harus dipanggil dengan argumen yang sesuai. Jika tidak, akan terjadi kesalahan.Berikut ini adalah contoh yang salah:
class ParentClass { constructor(name) { this.name = name; } greet() { console.log(`Hello, my name is ${this.name}.`); }}class ChildClass extends ParentClass { constructor() { super(); // Kesalahan! } greet() { super.greet(); console.log('Hello from ChildClass.'); }}const child = new ChildClass();child.greet();
Dalam contoh ini, konstruktor kelas ParentClass memerlukan argumen name, tetapi konstruktor kelas ChildClass memanggil fungsi super() tanpa argumen. Hal ini akan menyebabkan kesalahan.Secara keseluruhan, fungsi super() dapat dipanggil dengan atau tanpa argumen, tergantung pada kebutuhan konstruktor kelas induk.
