Ya, yang pertama static method
disebut juga class method
, sedangkan yang kedua adalah instance method
.
Perhatikan contoh-contoh berikut, untuk memahaminya secara lebih rinci.
Dalam ES5
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.isPerson = function(obj) {
return obj.constructor === Person;
}
Person.prototype.sayHi = function() {
return "Hi " + this.firstName;
}
Dalam kode di atas, isPerson
adalah metode statis, sedangkan sayHi
metode instan dari Person
.
Di bawah ini adalah cara membuat objek dari Person
konstruktor.
var aminu = new Person("Aminu", "Abubakar");
Menggunakan metode statis isPerson
.
Person.isPerson(aminu); // will return true
Menggunakan metode instance sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
Dalam ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
Lihat bagaimana static
kata kunci digunakan untuk mendeklarasikan metode statis isPerson
.
Untuk membuat objek Person
kelas.
const aminu = new Person("Aminu", "Abubakar");
Menggunakan metode statis isPerson
.
Person.isPerson(aminu); // will return true
Menggunakan metode instance sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
CATATAN: Kedua contoh pada dasarnya sama, JavaScript tetap merupakan bahasa tanpa kelas. Yang class
diperkenalkan dalam ES6 terutama adalah gula sintaksis atas model pewarisan berbasis prototipe yang ada.