全局功能和方法同时进行

时间:2017-09-23 00:54:25

标签: javascript arrays

例如,我正在编写一个使用两个数组的函数。如何定义此函数以将其称为全局函数,将其传递给两个数组或作为Array方法,将其传递给第二个数组:

func([1, 2, 3], [3, 2, 1]);
[1, 2, 3].func([3, 2, 1]);

这是我的想法:

func = function (...args) { // define global function
    if (args.length > 1) { 
        // function called as global with 2 arrays in arguments
    } else {
        // function called as Array method, with second array in arguments
    }
}
Array.prototype.func = func; // define Array method

还有更好的方法吗? 感谢。

1 个答案:

答案 0 :(得分:0)

您可以为原型创建包装函数:

func = function (a,b) { // define global function
    // will always have a,b defined
}
Array.prototype.func = function (b){ func(this,b) }; // define Array method

这种方式对你的功能没有任何影响。 (假设你的函数正好需要2个参数)