使用无序/可选参数的jQuery方法

有一堆jQuery方法允许您重新排序或省略特定参数。例如:使用无序/可选参数的jQuery方法

$('#box').animate({top: 100}, 2000, "linear", function(){alert("done");}); 

作品完全一样:

$('#box').animate({top: 100}, 2000, function(){alert("done");}); 

如何jQuery的配置它们的方法实现这种灵活性不通过关联数组到一个说法?

他们会检查每个参数的数据类型并根据结果分配它吗?这会为每种方法增加大量的开销吗?

回答:

我一直在使用一个开关效仿我自己的解决方案。

// Allocate passed arguments to settings based on type 

for(var i = 0; i <= arguments.length; i++) {

var arg = arguments[i];

switch (typeof arg) {

case "function":

settings.action = arg;

break;

case "boolean":

settings.runOnLoad = arg;

break;

case "number":

settings.duration = arg;

break;

}

}

回答:

看看jQuery.animate() function on github我看到他们正在调用jQuery.speed()的第2,3,4个参数。速度函数进一步定义下来,并使用参数进行一些类型检查。从effects.js

代码片段:

jQuery.speed = function(speed, easing, fn) { 

var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {

complete: fn || !fn && easing ||

jQuery.isFunction(speed) && speed,

duration: speed,

easing: fn && easing || easing && !jQuery.isFunction(easing) && easing

};

...

};

回答:

简短的回答:是的,他们通常测试是否$.isFunction$.isObject$.isArray等左右移动基于什么类型的他们的论点。如果你有预期的predefined list of prototypes,这真的只适用。 (在动画的情况下,第二个参数可以是一个对象(期权)或数值(持续时间)。

回答:

当然jQuery的使用ifelseswitch声明,每个参数都必须首先检查, 是函数,布尔,字符串,整数或对象值

,才可以运行。

以上是 使用无序/可选参数的jQuery方法 的全部内容, 来源链接: utcz.com/qa/261626.html

回到顶部