在jQuery plugin pattern之后,在我们使用apply()来定义{{1}的范围的情况下,如何找到函数的arity,比如methods.myfunc
函数。并将this
应用于此?
arguments
这可能会暴露我对功能范围的一些无知,但我在这里很难过,并且没有找到足以解释这个问题的例子。
我对这个问题的部分启发来自NodeJS / ExpressJS,它们对某些函数有不同数量的参数。例如,如果传递了3个参数,则假设存在错误对象,但您可以轻松传递两个并且没有问题!
更新:将代码中的函数从init更改为myfunc
答案 0 :(得分:3)
您必须使用命名函数表达式(with all its idiosyncrasies):
var methods = {
init : function init () {
var arity = init.length;
}
};
这是小提琴:http://jsfiddle.net/tqJSK/
说实话,我不知道为什么你需要这个。您可以在函数中对该数字进行硬编码,因为命名参数的数量永远不会改变...
(function($, window, document) {
function init () {
var arity = init.length;
}
var methods = {
init : init
};
}(jQuery, window, document));
更新2:如果您要查找的是此特定电话中提供的参数数量,请使用arguments.length
:
var methods = {
init : function () {
var count = arguments.length;
}
};