См. Следующее определение объекта:
'Используйте strict'var jane = {name:' Jane ', display: function () {retlun' человек с именем ' + this.name; }};Это будет вызывать нормально
Jane.display ();
Следующий вызов приведет к ошибке:
var func = jane.display; func ()
TypeError: не удается прочитать «имя" название "не определенного
Поскольку этот указатель изменился, правильный способ заключается в следующем:
var func2 = jane.display.bind (Джейн); func2 ()
'Пенсон по имени Джейн'
Все функции имеют свои особые эти переменные, такие как предание ниже
var jane = {name: 'Jane', друзья: ['tarzan', 'chieta'], sayhitofriends: function () {'strict' strict '; this.friends.foreach (function (друг) {// 'this' не определен здесь, console.log (this.name + 'говорит hi to' + friend);}); }}Вызовы Sayshitofriends произведу ошибку:
Jane.sayhitofriends ()
TypeError: не удается прочитать «имя" название "не определенного
Решение 1: Сохраните это в разных переменных
var jane = {name: 'Jane', друзья: ['tarzan', 'chieta'], sayhitofriends: function () {'strict' strict '; var that = это; this.friends.foreach (function (друг) {console.log (that.name + 'говорит hi to' + friend);}); }}Решение 2: Используйте второй параметр Foreach, который может указать значение для этого
var jane = {name: 'Jane', друзья: ['tarzan', 'chieta'], sayhitofriends: function () {'strict' strict '; this.friends.foreach (function (друг) {console.log (this.name + 'говорит hi to' + friend);}, это); }}