2017-09-23 53 views
1

例如,我在写一个使用两个数组的函数。我如何定义这个函数中调用它作为一个全球性的功能,它传递两个数组或作为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

参数的个数并不告诉你函数是如何被调用的,因为你可以调用像[[1,2,3] .func([3, 2,1],[4,5,6])。你可以改为测试'this'是否是一个数组... – nnnnnn

回答

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个参数)