យើង​ដឹង​រួច​មក​ហើយ​ថា ភាសា 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() មក​ប្រើ​។