我正在编写一个带有一个单词对象数组的函数,然后修改单词对象。我希望用户也能够在单个单词对象上使用该功能,并且我想知道哪种方法更好:
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]);
}
答案 0 :(得分:0)
JavaScript库倾向于使用第一种方法,即接受任何类型的参数并尝试以某种方式处理它。我想这主要是因为JavaScript动态性质,用户往往不知道(或不确定)他们从其他系统/库接收的对象类型。 JavaScript中的类型检测可能非常繁琐,用户代码最终会成为大量的if
和switch
es,因此这种类型的检查可以更好地封装在库级别上。