ใช่คนแรกเป็นstatic method
ที่เรียกว่าในขณะที่คนที่สองเป็นclass method
instance method
ลองพิจารณาตัวอย่างต่อไปนี้เพื่อทำความเข้าใจโดยละเอียดยิ่งขึ้น
ใน 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;
}
ในโค้ดข้างต้นisPerson
เป็นวิธีการแบบคงที่ในขณะที่เป็นวิธีการที่ตัวอย่างของsayHi
Person
ด้านล่างเป็นวิธีการสร้างวัตถุจากตัวPerson
สร้าง
var aminu = new Person("Aminu", "Abubakar");
isPerson
โดยใช้วิธีการแบบคงที่
Person.isPerson(aminu); // will return true
ใช้วิธีการอินสแตนซ์ sayHi
โดยใช้วิธีการเช่น
aminu.sayHi(); // will return "Hi Aminu"
ใน ES6
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
static isPerson(obj) {
return obj.constructor === Person;
}
sayHi() {
return `Hi ${this.firstName}`;
}
}
ดูที่วิธีการคำหลักที่ถูกใช้ในการประกาศวิธีการคงstatic
isPerson
เพื่อสร้างวัตถุ Person
คลาส
const aminu = new Person("Aminu", "Abubakar");
ใช้วิธีการคงที่ isPerson
โดยใช้วิธีการแบบคงที่
Person.isPerson(aminu); // will return true
ใช้วิธีการอินสแตนซ์ sayHi
โดยใช้วิธีการเช่น
aminu.sayHi(); // will return "Hi Aminu"
หมายเหตุ:ทั้งสองตัวอย่างนั้นโดยพื้นฐานแล้วจาวาสคริปต์ยังคงเป็นภาษาที่ไม่มีคลาส การclass
แนะนำในES6นั้นส่วนใหญ่เป็นน้ำตาลในรูปแบบ syntax มากกว่าต้นแบบที่มีอยู่เดิม