如果排除对象类型,如何删除并将后面的函数参数移动到左侧?

如果已经回答,我道歉。 我不知道这个方法的更好的技术术语,我似乎无法在这里找到或谷歌搜索。

基本上我想要的是能够创建一个像jQuery如何处理Ajax函数参数的函数。 示例: $.get(url, callback);$.post(url, data, callback);

基本上,如果从函数中排除data ,它将在其位置向左移动callback 。 因为函数运行时它使用输入顺序中的变量名。 我假设这个方法将涉及检查arguments[1]arguments[2]但我想确定这是否正确,因为我希望尽可能清理我的代码。

而不是检查参数[1]和参数[2],你应该检查

 $.post(url, data, callback) 

url是字符串,数据是对象,回调是函数

花了一些时间在这里使用有用的信息。 我设法编写了我的解决方案。 我想我会发布我的工作(简化编辑)结果给那些想要一个好例子如何制作一个的人。

 function post(url) { var callback, data, isAsync, // Prepare possible arguments. i, // Loop index. length = arguments.length; // Get arguments length. // Check the argument's types for optional passed parameter options. for (i = 1; i < length && i < 4; i++) { if (typeof arguments[i] === "object") { data = arguments[i]; } if (typeof arguments[i] === "function") { callback = arguments[i]; } if (typeof arguments[i] === "boolean") { isAsync = arguments[i]; } } // Asynchronous is enabled by default. if (isAsync === undefined) { isAsync = true; } // More code here... }