Evet, birincisi static method
de denir class method
, ikincisi iseinstance method
.
Daha ayrıntılı olarak anlamak için aşağıdaki örnekleri düşünün.
ES5'te
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;
}
Yukarıdaki kodda, isPerson
statik bir yöntem varken sayHi
,Person
.
Aşağıda, Person
yapıcıdan nasıl nesne oluşturulacağı açıklanmaktadır.
var aminu = new Person("Aminu", "Abubakar");
Statik yöntemi kullanarak isPerson
.
Person.isPerson(aminu); // will return true
Örnek yöntemini kullanarak sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
ES6'da
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
static
Statik yöntemi bildirmek için anahtar kelimenin nasıl kullanıldığına bakın isPerson
.
Person
Sınıf nesnesi oluşturmak için .
const aminu = new Person("Aminu", "Abubakar");
Statik yöntemi kullanarak isPerson
.
Person.isPerson(aminu); // will return true
Örnek yöntemini kullanarak sayHi
.
aminu.sayHi(); // will return "Hi Aminu"
NOT: Her iki örnek de aynıdır, JavaScript sınıfsız bir dil olarak kalır. class
Tanıtılan ES6 öncelikle mevcut prototip tabanlı miras modeli üzerinde sözdizimsel şekerdir.