jQuery自动完成小部件源 - 来自哪里的参数?

时间:2013-01-06 18:50:52

标签: javascript jquery jquery-ui

我正在研究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可以传递。

我很困惑,如果有人可以提供帮助,我会非常感激。

2 个答案:

答案 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