Если где-то явно не указано, что это разрешено
То есть, это в спецификации :
The map
функция намеренно общая;это не требует, чтобы его значение this было Array
объектом.Поэтому он может быть передан другим объектам для использования в качестве метода.
Большинство методов в Array.prototype
имеют это примечание.Те, которые не могут быть использованы таким образом, не имеют такой заметки.
То, хотите ли вы использовать это, поэтому, это вопрос стиля.Разные люди по-разному говорят о том, хороший это / плохой / безразличный стиль.
Примечание: если вы собираетесь использовать map
таким образом, вместо того, чтобы каждый раз писать это от руки,дайте себе ярлык:
const map = Function.prototype.call.bind(Array.prototype.map);
, а затем используйте его так:
const result = map(arrayLike, e => /*...*/);
Live Пример:
const map = Function.prototype.call.bind(Array.prototype.map);
const arrayLike = {
0: "zero",
1: "one",
2: "two",
length: 3
};
const result = map(arrayLike, e => e.toUpperCase());
console.log(result);