
វិធីក៏ជាក្បួន ដូចជាក្បួនដទៃទៀតនៅខាងក្រៅថ្នាក់ដែរ តែវិធីខុសពីក្បួនទាំងនោះនៅត្រង់ថា នៅពេលដែលវិធីត្រូវបានយកទៅប្រើតាមរយៈសិស្សណាមួយ សិស្សនោះនឹងត្រូវផ្តល់ជាដំណឹងឲ្យទៅវិធីនោះជាស្វ័យប្រវត្តិ។ ដូចនេះនៅក្នុងវិធី ក្រៅពីដំណឹងផ្សេងៗ ដែលយើងបានផ្តល់ឲ្យទៅវិធី នៅមានដំណឹងជាសិស្សមួយទៀត ដែលមានរួចជាស្រេចនៅក្នុងវិធី។ ដំណឹងដែលជាសិស្សនោះត្រូវបានភ្ជាប់ទៅនឹងដំណាងមើលមិនឃើញមួយ ដែលជាពាក្យពិសេសថា this ។ ដូចនេះបើយើងចង់យកដំណឹងដែលជាសិស្សនោះទៅប្រើការផ្សេងៗនៅក្នុងវិធី យើងចាំបាច់ត្រូវតែយកវាមកប្រើតាមរយៈឈ្មោះ this នេះ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតក្បួនទទេមួយមានឈ្មោះថា Area function Area(){}; //ការយកក្បួនឈ្មោះ Area មកប្រើជាថ្នាក់សំរាប់រក្សាទុកវត្ថុនិងឬអថេរផ្សេងៗ Area.prototype.pi = 3.14; Area.prototype.rectangle = function(width, height){ var surface = width * height; console.log('ក្រឡាផ្ទៃចតុកោណកែងគឺ៖ '+surface); //ការយកសិស្សមកប្រើ console.log('this គឺជាឈ្មោះរបស់សិស្ស៖ '+this); } //ការបង្កើតសិស្សនៃថ្នាក់ Area var instance = new Area(); //ការយកសម្បត្តិក្នុងថ្នាក់ Area មកប្រើ console.log(instance.rectangle(25, 5));
នៅលើបន្ទាត់លេខ 11 ការសរសេរថា 'this គឺជាឈ្មោះរបស់សិស្ស៖ '+this គឺជាបញ្ជាដែលនៅក្នុងនោះមានការតម្រូវឲ្យយកសិស្សឈ្មោះ instance មកប្រើតាមរយៈឈ្មោះ this ដែលជាឈ្មោះមើលមិនឃើញមួយនៅក្នុងគ្រប់វិធីទាំងអស់។
យើងក៏ត្រូវធ្វើការកត់សម្គាល់ផងដែរថា ដំណឹងដែលជាសិស្សនឹងត្រូវផ្តល់ឲ្យទៅគ្រប់វិធីទាំងអស់ជាស្វ័យប្រវត្តិ នៅពេលដែលវិធីទាំងនោះត្រូវបានយកទៅប្រើតាមរយៈសិស្សនោះ។ ក៏ប៉ុន្តែការយកសិស្សនោះទៅប្រើការនៅក្នុងវិធីឬអត់ គឺគ្មានបញ្ហាអ្វីឡើយ។ គឺប្រៀបបានដូចជាវត្ថុមួយដែលគេប្រគល់ឲ្យយើង ហើយយើងយកវាទៅប្រើឬអត់ គឺគ្មានបញ្ហាអ្វីឡើយ។
មួយវិញទៀត យើងបានដឹងរួចមកហើយថា គ្រប់ការយកសម្បត្តិនៅក្នុងថ្នាក់ណាមួយទៅប្រើការនៅខាងក្រៅថ្នាក់ គឺត្រូវតែធ្វើឡើងតាមរយៈសិស្សនៃថ្នាក់នោះ។ ដូចគ្នាដែរ ការយកវិធីណាមួយទៅប្រើនៅក្នុងវិធីណាមួយផ្សេងទៀត ក៏ត្រូវធ្វើឡើងតាមរយៈសិស្សនៃថ្នាក់របស់វិធីទាំងនោះដែរ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតក្បួនទទេមួយមានឈ្មោះថា Area function Area(){}; //ការយកក្បួនឈ្មោះ Area មកប្រើជាថ្នាក់សំរាប់រក្សាទុកវត្ថុនិងឬអថេរផ្សេងៗ Area.prototype.pi = 3.14; Area.prototype.rectangle = function(width, height){ var surface = width * height; return surface; } Area.prototype.display = function(){ //ការយកវិធីក្នុងថ្នាក់ Area មកប្រើតាមរយៈឈ្មោះ this console.log('ក្រឡាផ្ទៃចតុកោណកែងគឺ៖ '+this.rectangle(25, 5)); } var instance = new Area(); instance.display();
នៅលើបន្ទាត់លេខ 12 ការសរសេរថា this.rectangle(25, 5) គឺជាបញ្ជាតម្រូវឲ្យយកវិធីឈ្មោះ rectangle នៅក្នុងថ្នាក់ឈ្មោះ Area មកប្រើនៅក្នុងវិធីឈ្មោះ display នៅក្នុងថ្នាក់ដដែលនោះ។ វិធីឈ្មោះ rectangle ត្រូវបានយកមកប្រើតាមរយៈឈ្មោះ this ៕