មានយុទ្ធសាស្ត្រជាច្រើនបែបយ៉ាងនៅក្នងការសរសេរកម្មវិធីកំព្យូទ័រ។ យុទ្ធសាស្ត្រទាំងនោះមានដូចជាការសរសេរកម្មវិធីដោយត្រឹមតែការបង្កើតក្បួនដែលភាសាអង់គ្លេសហៅថា procedural programming (PP) និងការសរសេរកម្មវិធីដោយការបង្កើតថ្នាក់ដែលភាសាអង់គ្លេសហៅថា object oriented programming (OOP) ។
ដោយឡែក ភាសា ES6 អនុញ្ញាតអោយយើងអាចប្រើប្រាស់យុទ្ធសាស្ត្រ PP ក៏បាន យុទ្ធសាស្ត្រ OOP ក៏បាននៅក្នុងការសរសេរកម្មវិធីគ្រប់បែបយ៉ាងទាំងអស់ ដោយគ្មានបញ្ហាអ្វីឡើយ។
នៅក្នុងភាសា ES6 ថ្នាក់ (class) គឺជាកន្លែងមួយនៅក្នុងសតិរបស់កំព្យូទ័រ ប្រើប្រាស់ជាកន្លែងសម្រាប់រក្សាទុកក្បួននិងឬអថេរមួយចំនួន ដែលនឹងត្រូវយកទៅប្រើប្រាស់នៅពេលក្រោយៗទៀត។ ដើម្បីបង្កើតថ្នាក់ យើងត្រូវធ្វើដូចខាងក្រោមនេះ៖
class Area{
constructor(){
this.pi = 3.14
}
rectangle(width,height){
let surface = width * height
console.log(`The area of the rectangle is: ${surface}`)
}
}
គ្រប់ក្បួននិងឬអថេរទាំងឡាយដែលត្រូវបានបង្កើតឡើងនិងទុកនៅក្នុងថ្នាក់ ត្រូវគេឲ្យឈ្មោះថាជា សម្បត្តិថ្នាក់ (class attribute) ដែលអាចជាក្បួន និងឬទិន្នន័យផ្សេងៗ។ ក្បួននៅក្នុងថ្នាក់ត្រូវគេឲ្យឈ្មោះថាជា វិធី (method) ឯចំណែកទិន្នន័យនៅក្នុងថា្នក់ ដែលត្រូវបង្កើតឡើងនៅក្នុងវិធីពិសេសមានឈ្មោះថា constructor ត្រូវគេចាត់ទុកថាជា ទិន្នន័យសិស្ស (instance attribute) ។ ជាក់ស្តែង នៅក្នុងថ្នាក់ឈ្មោះ Area ខាងលើ អថេរឈ្មោះ pi គឺជាទិន្នន័យសិស្ស និងក្បួនឈ្មោះ rectangle គឺជាវិធី។
ក្រោយពីត្រូវបង្កើតឡើងរួចហើយ យើងអាចយកឈ្មោះជាច្រើនទៅភ្ជាប់នឹងថ្នាក់ណាមួយ បានដោយគ្មានបញ្ហាអ្វីឡើយ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
class Area{
constructor(){
this.pi = 3.14
}
rectangle(width,height){
let surface = width * height
console.log(`The area of the rectangle is: ${surface}`)
}
}
let plane = layer = Area
console.log(plane)
console.log(layer)
console.log(Area)
ក្រៅពីការផ្តល់ផលប្រយោជន៍នៃការរក្សាទុកក្បួនខ្នាតនិងឬទិន្នន័យផ្សេងៗសំរាប់យកទៅប្រើការនៅពេលក្រោយទៀត (code reused) ថ្នាក់ផ្តល់ផលប្រយោជន៍ចំនួន ៣ ថែមទៀតគឺ encapsulation, inheritance, និង polymorphism ។
ផលប្រយោជន៍ encapsulation មានន័យថា ថ្នាក់អាចជួយរក្សារទុកនូវទិន្នន័យទាំងឡាយប្រកបដោយសុវត្ថភាពជាងទិន្នន័យនៅក្រៅថ្នាក់ ពីព្រោះទិន្នន័យនៅក្នុងថ្នាក់អាចត្រូវយកទៅប្រើប្រាស់បាន តែតាមរយៈវិធីនានានៅក្នុងថ្នាក់តែប៉ុណ្ណោះ (data hiding) ។
ផលប្រយោជន៍ inheritance បានន័យថាយើងអាចយកថ្នាក់នៃក្បួនខ្នាតផ្សេងៗ មកពង្រីកអោយកាន់ធំថែមទៀត ដោយបង្កើតថ្នាក់នៃក្បួនខ្នាតថ្មីៗទៀតបន្តចេញពីថ្នាក់ដើមទាំងនោះ។
ផលប្រយោជន៍ polymorphism បានន័យថា នៅក្នុងថ្នាក់ថ្មីរបស់យើង ដែលត្រូវបង្កើតឡើងដោយបន្តចេញពីថ្នាក់ដើមទាំនោះ យើងអាចបង្កើតវិធីនិងឬទិន្នន័យផ្សេងៗមានឈ្មោះដូចគ្នាទៅនឹងវិធីនិងឬទិន្នន័យមួយចំនួន នៅក្នុងថា្នក់ដើម។ ហើយនៅពេលដែលយើងយកវិធីនិងឬទិន្នន័យមានឈ្មោះដូចគ្នាទាំងនោះមកប្រើ វិធីនិងឬទិន្នន័យទាំងនោះនឹងត្រូវប្រែរូបទៅជារបស់ថ្នាក់ណាមួយ អាស្រ័យទៅតាមកាលទេសខុសៗគ្នា៕