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

Posted

技术标签:

【中文标题】如何将用户定义的函数应用于变量,就像内置函数一样?【英文标题】:how to apply user defined function on variables just like built in function? 【发布时间】:2018-11-02 09:50:29 【问题描述】:

我正在尝试使用 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 的函数。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

你应该在这里使用原型。将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();

forEachmap 等每个函数也存在于Arrayprototype 中,它们是prototype 的属性。你可以通过console.log(Array.prototype); 看到它你可以看到Arrayprototype 有许多内置方法可供你使用,你可以使用点来调用它们。因此,您只需通过将新函数属性分配给Array.prototype 来添加您自己的函数,如上面的 sn-p 所示。

【讨论】:

以上是关于如何将用户定义的函数应用于变量,就像内置函数一样?的主要内容,如果未能解决你的问题,请参考以下文章

Python--函数

如何使用内置函数而不是 NULL 检查来验证指针?

python学习交流 - 内置函数使用方法和应用举例

如何将 A1:A500 等数组数据传递到 Excel 用户定义函数中

SQL自定义函数function

封装 继承 构造函数