Получение неожиданного вывода - PullRequest
0 голосов
/ 30 мая 2018
function normalize() {
   console.log(this.coords.map(function(x){
      return x/this.length;
 }));
}

normalize.call({coords: [0, 2, 3], length: 5});

Ожидаемый результат: [0,0.4,0.6]

Выход: [NaN, Infinity, Infinity]

Может кто-нибудь объяснить ошибку?

1 Ответ

0 голосов
/ 30 мая 2018

Вам необходимо взять this вместе с функцией отображения с Array#map.Без thisArg обратный вызов не имеет доступа к this.

function normalize() {
    return this.coords.map(function (x) {
        return x/this.length;
    }, this);
}

console.log(normalize.call({ coords: [0, 2, 3], length: 5 }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...