វិធីក៏ជាក្បួន ដូចជាក្បួនដទៃទៀតនៅខាងក្រៅថ្នាក់ដែរ តែវិធីខុសពីក្បួនទាំងនោះនៅត្រង់ថា នៅពេលដែលវិធីត្រូវបានយកទៅប្រើតាមរយៈសិស្សណាមួយ សិស្សនោះនឹងត្រូវផ្តល់ជាដំណឹងឲ្យទៅវិធីនោះជាស្វ័យប្រវត្តិ។ ដូចនេះនៅក្នុងវិធី ក្រៅពីដំណឹងផ្សេងៗ ដែលយើងបានផ្តល់ឲ្យទៅវិធី នៅមានដំណឹងជាសិស្សមួយទៀត ដែលមានរួចជាស្រេចនៅក្នុងវិធី។ ដំណឹងដែលជាសិស្សនោះត្រូវបានភ្ជាប់ទៅនឹងដំណាងមើលមិនឃើញមួយ ដែលជាពាក្យពិសេសថា 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))