Как применить пользовательскую функцию к переменным, как встроенная функция? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь настроить определяемую пользователем функцию для работы с переменными, используя оператор точки (.) Вместо отправки в качестве параметра. Так что в моей программе у меня есть массив целых чисел, и мне нужно выполнить для каждого из них, не используя встроенную функцию forEach. Я знаю этот звук мусора. Итак, я создал функцию с именем somefunc и у меня есть переменная с именем arr.

код, который я сделал

var somefunc = function()
{
   console.log('this function executed');
}
var arr=[1,2];
arr.somefunc();

Код, который я пытаюсь имитировать

var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick
});

Я хочу выполнить такую ​​функцию для каждого.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Попробуйте добавить свою функцию в массив proptotype, чтобы создать желаемое поведение. Получите доступ к текущему массиву, используя это.

Array.prototype.customIterator = function() {
  // this.forEach(() => {})
}
0 голосов
/ 02 ноября 2018

Вы должны использовать прототипы здесь. Добавьте somefunc к прототипу JS, встроенного в тип Array.

    Array.prototype.somefunc = function() {
        this.forEach(function (eachName, index) {
              console.log(index + 1 + ". " + eachName);
        });
        // or you can use other ways to itarate over all array elemets
        // like a simple for loop for (let i=0; i < this.length; i++) {...}
        // 'this' here refers to an array you are running somefunc on
    }
    var friends = ["Mike", "Stacy", "Andy", "Rick"];
    friends.somefunc();

Каждая функция, такая как forEach, map и т. Д., Также присутствует в prototype Array, они являются свойствами prototype. Вы можете увидеть это, выполнив console.log(Array.prototype);. Вы можете увидеть, что prototype из Array имеет много встроенных методов, доступных вам из коробки, которые вы можете вызвать с помощью точки. Таким образом, вы просто добавляете свои собственные функции вместе с ними, назначая новое свойство функции для Array.prototype, как показано во фрагменте выше.

...