2017-09-23 96 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個參數)