ดูคำจำกัดความของวัตถุต่อไปนี้:
'ใช้ Strict'var Jane = {ชื่อ:' Jane ', Display: function () {retrun' บุคคลที่ชื่อ ' + this.name; -สิ่งนี้จะโทรตามปกติ
Jane.Display ();
การโทรต่อไปนี้จะทำให้เกิดข้อผิดพลาด:
var func = jane.display; func ()
TypeError: ไม่สามารถอ่านคุณสมบัติ 'ชื่อ' ของ undefined ได้
เนื่องจากตัวชี้นี้มีการเปลี่ยนแปลงวิธีที่ถูกต้องมีดังนี้:
var func2 = jane.display.bind (Jane); func2 ()
'เพนสันชื่อเจน'
ฟังก์ชั่นทั้งหมดมีตัวแปรพิเศษนี้เช่น foreach ด้านล่าง
var Jane = {ชื่อ: 'Jane', เพื่อน: ['Tarzan', 'Cheeta'], sayhitofriends: function () {'ใช้เข้มงวด'; this.friends.foreach (ฟังก์ชั่น (เพื่อน) {// 'this' ไม่ได้กำหนดไว้ที่นี่ console.log (this.name + 'กล่าวว่าสวัสดีถึง' + เพื่อน);}); -การโทร Sayshitofriends จะสร้างข้อผิดพลาด:
jane.sayhitofriends ()
TypeError: ไม่สามารถอ่านคุณสมบัติ 'ชื่อ' ของ undefined ได้
โซลูชัน 1: บันทึกสิ่งนี้ในตัวแปรที่แตกต่างกัน
var Jane = {ชื่อ: 'Jane', เพื่อน: ['Tarzan', 'Cheeta'], sayhitofriends: function () {'ใช้เข้มงวด'; var that = this; this.friends.foreach (ฟังก์ชั่น (เพื่อน) {console.log (that.name + 'กล่าวว่าสวัสดีถึง' + เพื่อน);}); -โซลูชันที่ 2: ใช้พารามิเตอร์ที่สองของ foreach ซึ่งสามารถระบุค่านี้ได้
var Jane = {ชื่อ: 'Jane', เพื่อน: ['Tarzan', 'Cheeta'], sayhitofriends: function () {'ใช้เข้มงวด'; this.friends.foreach (ฟังก์ชั่น (เพื่อน) {console.log (this.name + 'กล่าวว่าสวัสดีถึง' + เพื่อน);}, สิ่งนี้); -