javascript значение массива как имя переменной, как я получаю их из функции - PullRequest
0 голосов
/ 02 августа 2020

Я использую значение массива как переменную, а затем вызываю метод функции N, как я получаю их в функции N.

Я действительно хочу смоделировать метод массива Javascript, я не хочу использовать параметры для достижения этого. Например,

 var p1 = [1,2,3,4,5];    p1.push(6);

function _Array() {
      this._this = this;
    }
    _Array.prototype.show = function () {
        this._this.forEach(function(item){alert(item);})    //how to print 1,2,3,4,5
    };

    var p1 = [1,2,3,4,5];
    p1 = new _Array();

    //p1._Array.call(p1);        //not work 
  // new _Array().show.call(p1);   //not work 
   // p1.show();               //not work

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Если вы настойчиво хотите написать метод, который принимает массив по ссылке, вы можете изменить прототип массива следующим образом:

Array.prototype.show = function() {
  this.forEach(item => alert(item));
}

Однако это ОЧЕНЬ ПЛОХАЯ ИДЕЯ для изменения встроенных прототипов объектов, так как это может вызвать конфликты с внешними библиотеками, реализующими их собственную функцию "show", которая используется по-другому, или вызвать несовместимость с будущими версиями JS, реализующими это метод.

В большинстве ситуаций было бы гораздо разумнее передать массив в качестве параметра, если только у вас нет очень конкретной c причины, по которой вы этого не делаете. В этом случае вы должны по крайней мере префикс метода каким-либо идентификатором проекта, чтобы минимизировать вероятность возникновения конфликтов.

0 голосов
/ 02 августа 2020

Вы должны сохранить это в экземпляре

function N(arr) {
  this._this = arr
}

N.prototype.say = function () {
  this._this.forEach(function (item) {
    console.log(item)
  })
}

p1 = new N([1, 2, 3, 4, 5])
p1.say()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...