វិធីក៏ជាក្បួន ដូចជាក្បួនដទៃទៀតនៅខាងក្រៅថ្នាក់ដែរ តែវិធីខុសពីក្បួនទាំងនោះនៅត្រង់ថា នៅពេលដែលវិធីត្រូវបានយកទៅប្រើតាមរយៈសិស្សណាមួយ សិស្សនោះនឹងត្រូវផ្តល់ជាដំណឹងឲ្យទៅវិធីនោះជាស្វ័យប្រវត្តិ។ ដូចនេះនៅក្នុងវិធី ក្រៅពីដំណឹងផ្សេងៗ ដែលយើងបានផ្តល់ឲ្យទៅវិធី នៅមានដំណឹងជាសិស្សមួយទៀត ដែលមានរួចជាស្រេចនៅក្នុងវិធី។ ដំណឹងដែលជាសិស្សនោះត្រូវបានភ្ជាប់ទៅនឹងដំណាងមើលមិនឃើញមួយ ដែលជាពាក្យពិសេសថា this ។ ដូចនេះបើយើងចង់យកដំណឹងដែលជាសិស្សនោះទៅប្រើការផ្សេងៗនៅក្នុងវិធី យើងចាំបាច់ត្រូវតែយកវាមកប្រើតាមរយៈឈ្មោះ this នេះ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
class Area{
constructor(){
this.pi = 3.14
}
rectangle(width,height){
let surface = width * height
console.log(`The area of the rectangle is: ${surface}`)
//ការយកសិស្សមកប្រើ
console.log(`"this" is the instance ${this}`)
}
}
//ការបង្កើតសិស្សនៃថ្នាក់ Area
let instance = new Area()
//ការយកសម្បត្តិក្នុងថ្នាក់ Area មកប្រើ
console.log(instance.rectangle(25, 5))
យើងក៏ត្រូវធ្វើការកត់សម្គាល់ផងដែរថា ដំណឹងដែលជាសិស្សនឹងត្រូវផ្តល់ឲ្យទៅគ្រប់វិធីទាំងអស់ជាស្វ័យប្រវត្តិ នៅពេលដែលវិធីទាំងនោះត្រូវបានយកទៅប្រើតាមរយៈសិស្សនោះ។ ក៏ប៉ុន្តែការយកសិស្សនោះទៅប្រើការនៅក្នុងវិធីឬអត់ គឺគ្មានបញ្ហាអ្វីឡើយ។ គឺប្រៀបបានដូចជាវត្ថុមួយដែលគេប្រគល់ឲ្យយើង ហើយយើងយកវាទៅប្រើឬអត់ គឺគ្មានបញ្ហាអ្វីឡើយ។
មួយវិញទៀត យើងបានដឹងរួចមកហើយថា គ្រប់ការយកសម្បត្តិនៅក្នុងថ្នាក់ណាមួយទៅប្រើការនៅខាងក្រៅថ្នាក់ គឺត្រូវតែធ្វើឡើងតាមរយៈសិស្សនៃថ្នាក់នោះ។ ដូចគ្នាដែរ ការយកវិធីណាមួយទៅប្រើនៅក្នុងវិធីណាមួយផ្សេងទៀត ក៏ត្រូវធ្វើឡើងតាមរយៈសិស្សនៃថ្នាក់របស់វិធីទាំងនោះដែរ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
class Area{
constructor(){
this.pi = 3.14
}
rectangle(width,height){
let surface = width * height
console.log(`The area of the rectangle is: ${surface}`)
}
display(width,height){
//ការយកវិធីក្នុងថ្នាក់ Area មកប្រើតាមរយៈឈ្មោះ this
this.rectangle(width,height)
}
}
//ការបង្កើតសិស្សនៃថ្នាក់ Area
let instance = new Area()
//ការយកសម្បត្តិក្នុងថ្នាក់ Area មកប្រើ
console.log(instance.display(25, 5))