javascript – 使用动态参数排列创建方法/函数?

这在jQuery中一直存在,我想知道他们是如何做到的.我会给你一个关于蝙蝠的例子:

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

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

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

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

谢谢.

最佳答案 一种方法是使用参数.每个函数在范围内都有一个参数变量,它包含传递给函数的所有参数,而不管其签名如何.例如:

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
点赞