在处理多个参数类型时,“重载”函数或具有两个单独的函数是否更好?

时间:2014-09-26 09:17:14

标签: javascript

我正在编写一个带有一个单词对象数组的函数,然后修改单词对象。我希望用户也能够在单个单词对象上使用该功能,并且我想知道哪种方法更好:

a)使用函数类型检查输入的参数是对象还是数组并相应地做出响应 b)有两个函数,一个用于obj,另一个用于数组。

//method 1: accepts either a obj or an array
function wordChecker(element) {
    if (typeof element === 'object') {
        wordCheckerHelperHelper([element]);
    } else if(element instanceof Array) {
        wordCheckerHelper(element);
    } else throw new Error('invalid argument');
};

function wordCheckerHelper(arr) {
    //do something
};

//method 2: separate methods, but the wordCheckerObj method is just a wrapper around the wordCheckerArr method
function wordCheckerArr(arr) {
    //do something
};    

function wordCheckerObj(obj) {
    if(typeof obj !== 'object') throw new Error('invalid argument');
    workCheckerArr([obj]);
}

1 个答案:

答案 0 :(得分:0)

JavaScript库倾向于使用第一种方法,即接受任何类型的参数并尝试以某种方式处理它。我想这主要是因为JavaScript动态性质,用户往往不知道(或不确定)他们从其他系统/库接收的对象类型。 JavaScript中的类型检测可能非常繁琐,用户代码最终会成为大量的ifswitch es,因此这种类型的检查可以更好地封装在库级别上。