យើងដឹងរួចមកហើយថា ភាសា JavaScript ត្រូវបានបង្កើតឡើងដោយលោក Brendan Eich នៅក្នុងឆ្នាំ ១៩៩៥ កាលពីគាត់កាន់តួនាទីជាអ្នកសរសេរកូដបង្កើតភាសា JavaScript សំរាប់បញ្ចូលទៅក្នុង browser ដំបូងគេមួយមានឈ្មោះថា Netscape របស់ក្រុមហ៊ុនអាមេរិកាំង Netscape Communications ។
ក៏ប៉ុន្តែនៅក្នុងឆ្នាំ ១៩៩៦ ក្រុមហ៊ុន Netscape Communications បានប្រគល់សិទ្ធិអភិវឌ្ឍន៍និងកែប្រែភាសា JavaScript អោយទៅសមាគមកំណត់ស្តង់ដារបច្ចេកវិទ្យាកំព្យូទ័រនៃសហភាពអឺរ៉ុប ហៅកាត់ថា European Computer Manufacturers Association (ECMA) ។ ជាលទ្ធផល ចាប់តាំងពីឆ្នាំ ១៩៩៧ រហូតមកដល់ឆ្នាំ ២០២០ សមាគម ECMA បានអភិវឌ្ឍ និងប្រកាស់ដាក់អោយប្រើប្រាស់ភាសា JS បានចំនួន ១១ ជំនាន់ហើយ។ យ៉ាងណាម៉ិញ ស្តង់ដារនៃភាសា JavaScript ដែលត្រូវបាននិងកំពុងអភិវឌ្ឍដោយ ECMA ត្រូវគេអោយឈ្មោះថាជា ECMAScript ។
ដោយឡែក នៅក្នុងស្តង់ដារនៃភាសា JavaScript ជំនាន់ទី ៦ ដែលជា ECMAScript 6 ហៅកាត់ថា ES6 ការបង្កើតថ្នាក់ មានលក្ខណៈស្រដៀងនឹងការបង្កើតថ្នាក់នៅក្នុងភាសាមួយចំនួនធំទៀតដែរ ពោលគឺត្រូវប្រើពាក្យថា class រួមជាមួយនឹង constructor (ស្ថាបនិក) មួយនៅក្នុងនោះ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
class Car{
//បង្កើត constructor
constructor(brand){
this.carName = brand;
}
//បង្កើតវិធីឈ្មោះ present()
present(){
return "I have a " + this.carName;
}
}
//បង្កើត instance នៃថ្នាក់ Car
var myCar = new Car("Ford");
var element = document.getElementById("info");
//យក instance attribute មកប្រើ
element.innerHTML = "រថយន្តខ្ញុំម៉ាក " + myCar.carName;
មួយវិញទៀត នៅក្នុង ES6 constructor គឺជាវិធីពិសេសម៉្យាងនៅក្នុងថ្នាក់ ដែលនឹងត្រូវយកទៅប្រើប្រាស់ជាស្វ័យប្រវត្តិ នៅពេលបង្កើត instance ដែលជាវត្ថុនៃថ្នាក់ឬសិស្សរបស់ថ្នាក់។ ហើយការបង្កើតវិធីនានានៅក្នុងថ្នាក់ មិនទាមទារអោយប្រើពាក្យថា function ឡើយ។
ចំណែកឯការបន្តថ្នាក់វិញ គឺត្រូវធ្វើឡើងដោយប្រើប្រាស់ពាក្យថា extend ដូចខាងក្រោមនេះ៖
class Car{
constructor(brand){
this.carname = brand;
}
present() {
return 'ខ្ញុំមានរថយន្តម៉ាក ' + this.carname;
}
}
class Model extends Car{
constructor(brand, mod){
super(brand);
this.model = mod;
}
show(){
return this.present() + ', គំរូ ' + this.model;
}
}
mycar = new Model("Toyota", "RAV4");
document.getElementById("info").innerHTML = mycar.show();
ដូចនេះ យើងឃើញថាការយកស្ថាបនិក (constructor) នៃថ្នាក់មេមកប្រើនៅក្នុងថ្នាក់រង ត្រូវធ្វើឡើងដោយយកវិធីឈ្មោះ super() មកប្រើ។