使用无序/可选参数的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的使用if
,else
和switch
声明,每个参数都必须首先检查, 是函数,布尔,字符串,整数或对象值
,才可以运行。
以上是 使用无序/可选参数的jQuery方法 的全部内容, 来源链接: utcz.com/qa/261626.html