我正在研究autocomplete widget source尝试帮助我正在构建的小部件。 This line对我毫无意义:
_value: function() {
return this.valueMethod.apply( this.element, arguments );
},
valueMethod
is defined as:
this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];
那么arguments
参数来自哪里?据我了解,javascript具有功能范围,因此没有arguments
可以传递。
我很困惑,如果有人可以提供帮助,我会非常感激。
答案 0 :(得分:1)
arguments
参数总是会自动在javascript中的新函数中定义,即使您没有明确定义任何参数。所以apply
假设valueMethod是一个函数并传递这些参数。此外,您可以假设this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];
将返回一个函数指针。
答案 1 :(得分:1)
[
arguments
是一个类似于Array的对象,对应于传递给函数的参数。arguments
对象是所有函数中可用的局部变量;作为Function
属性的参数不能再使用。
来源:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments
换句话说,它是 - 对于大多数意图和目的 - 包含传递给函数的参数的数组,这有用的原因很多......特别是在创建方法或函数时接受可变数量的参数。在这种情况下,所有参数都被传递给另一个方法this.valueMethod
。