Lihat definisi objek berikut:
'Gunakan strict'var Jane = {name:' Jane ', display: function () {retrun' named ' + this.name; }};Ini akan menelepon secara normal
jane.display ();
Panggilan berikut akan menyebabkan kesalahan:
var func = Jane.display; func ()
TypeError: tidak dapat membaca 'nama' properti yang tidak ditentukan
Karena penunjuk ini telah berubah, cara yang benar adalah sebagai berikut:
var func2 = jane.display.bind (Jane); func2 ()
'Penson bernama Jane'
Semua fungsi memiliki variabel khusus ini, seperti foreach di bawah ini
var Jane = {name: 'Jane', teman: ['tarzan', 'cheeta'], sayhitofriends: function () {'gunakan ketat'; this.friends.foreach (function (friend) {// 'this' tidak ditentukan di sini console.log (this.name + 'menyapa' + teman);}); }}Memanggil Sayshitofriends akan menghasilkan kesalahan:
Jane.sayhitofriends ()
TypeError: tidak dapat membaca 'nama' properti yang tidak ditentukan
Solusi 1: Simpan ini dalam variabel yang berbeda
var Jane = {name: 'Jane', teman: ['tarzan', 'cheeta'], sayhitofriends: function () {'gunakan ketat'; var itu = ini; this.friends.foreach (function (friend) {console.log (that.name + 'menyapa' + teman);}); }}Solusi 2: Gunakan parameter kedua Foreach, yang dapat menentukan nilai untuk ini
var Jane = {name: 'Jane', teman: ['tarzan', 'cheeta'], sayhitofriends: function () {'gunakan ketat'; this.friends.foreach (function (friend) {console.log (this.name + 'menyapa' + teman);}, ini); }}