如何像内置函数一样将用户定义的函数应用于变量?

时间:2018-11-02 09:50:29

标签: javascript node.js function callback user-defined-functions

我试图通过使用dot(。)运算符而不是作为参数发送,使用户定义的函数在变量上起作用。因此,在我的程序中,我有一个整数数组,我需要对每个整数进行执行,而不要使用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
});

我想执行forEach之类的功能。

2 个答案:

答案 0 :(得分:-1)

您应该在此处使用原型。将somefunc添加到内置Array类型的JS原型中。

    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的{​​{1}}中也存在mapprototype等每个函数,它们是Array的属性。您可以通过执行prototype来查看它。您可以看到console.log(Array.prototype);的{​​{1}}具有许多内置方法供您使用,您可以使用点来调用它们。因此,您只需通过向prototype分配一个新的函数属性即可将自己的函数与它们一起添加,如上面的代码片段所示。

答案 1 :(得分:-1)

尝试将函数添加到数组原型以创建所需的行为。使用此访问当前数组。

Array.prototype.customIterator = function() {
  // this.forEach(() => {})
}