@roskoshinsky

JavaScript. Возможно ли изменить this в прототипе array?

Привет! Эта функция меняет местами ключи со значениями. Понятно, что её можно (и нужно) дополнить рекурсивным анализом. Но вопрос не в этом.

if(Array.prototype.flip === undefined){
  (function(){
    Array.prototype.flip = function(){
      var aArray = {};
      for(var k in this)if(this.hasOwnProperty(k)){
        aArray[this[k]] = k;
      } // fr
      return aArray;
    }; // flip
  })();
} // if


Хотелось бы, чтобы объект массива модифицировалСЯ, то есть изменялся this. Но тема с this[this[k]] = k не прокатывает, равно как и this = aArray. Существуют ли "обходные" пути, чтобы всё таки изменить this?
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Массив, это не просто объект, это экземпляр класса Array содержащий упорядоченые числовые индексы.
Ваше же flip применима к plain-object
function flip(obj) {
    Object.getOwnPropertyNames(obj).forEach(key => {
        var temp = obj[key];
        delete obj[key];
        obj[temp] = key;
    });
}
примерно так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы