javascript - 创建具有动态参数排列的方法/函数?

标签 javascript jquery methods arguments

这在 jQuery 中一直可见,我想知道他们是如何做到的。我马上给你举个例子:

在 jQuery 的 fadeIn() 动画中,您可以放入三种不同类型参数的组合:

.fadeIn([duration ] [, complete ] );
.fadeIn( options );
.fadeIn( [duration ] [, easing ] [, complete ] );

如图所示,您可以输入不同的参数,顺序并不重要。接受这些参数并像 fadeIn() 方法那样相应地处理它们的适当或最实用的方法是什么?我正在构建一个几乎可以以相同方式处理参数的插件:

.flipAnimation([newvalue]);
.flipAnimation([newvalue] [, duration]);
.flipAnimation([newvalue][, duration][, complete()]);
.flipAnimation(options);

谢谢。

最佳答案

一种方法是使用arguments。每个函数在范围内都有一个 arguments 变量,它包含传递给该函数的所有参数,无论其签名如何。例如:

a = function() { console.log(arguments); };
a(); // []
a(1,2,3,4);  // [1, 2, 3, 4]

因此,您可以将它与 typeof 结合使用来检查用户如何调用您的函数。例如

foo = function() {
    if(typeof(arguments[0]) == 'function') {
        // do something
    } else if(typeof(arguments[0]) == 'object') {
        // do something else
    }
};

foo( function() { return 'hi'; } );
foo( {foo: 'bar'} );
// both will do something

关于javascript - 创建具有动态参数排列的方法/函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041902/

相关文章:

javascript - 重定向页面但保留原始页面缓存以返回

java - 基类没有定义 equals 但子类需要定义。如何实现?

Ruby 模块包含,无法访问包含的方法,只能访问常量

javascript - 代码未在 IE 11 中运行,但在 Chrome 中运行良好

javascript - 纯 JS Ajax 到 jQuery Ajax

javascript - 如何在 jquery 或 javascript 中使用 window.location.replace

javascript - 限制 Kendo Grid 在触摸屏上一次向一个方向滚动

jquery - 表单中图像格式化程序的问题

javascript - 如何将 html 标记存储到数组中

Java:变量不递增