Ya, yang pertama static methoddisebut 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, isPersonadalah metode statis, sedangkan sayHimetode instan dari Person.
Di bawah ini adalah cara membuat objek dari Personkonstruktor.
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 statickata kunci digunakan untuk mendeklarasikan metode statis isPerson.
Untuk membuat objek Personkelas.
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 classdiperkenalkan dalam ES6 terutama adalah gula sintaksis atas model pewarisan berbasis prototipe yang ada.