1

我正在研究自动完成小部件源以尝试帮助我正在构建的小部件。这条线对我来说毫无意义:

_value: function() {
  return this.valueMethod.apply( this.element, arguments );
},

valueMethod 定义为

this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];

那么arguments参数是从哪里来的呢?据我了解,javascript 具有功能范围,因此无法arguments通过。

我很困惑,如果有人可以提供帮助,我将不胜感激。

4

2 回答 2

1

arguments即使您没有明确定义任何参数,该参数也将始终在 javascript 的新函数中自动定义。假设valueMethodapply是一个函数并传递这些参数也是如此。此外,您可以假设this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];将返回一个函数指针。

于 2013-01-06T18:59:25.593 回答
1

[arguments是] 一个类似数组的对象,对应于传递给函数的参数。该arguments对象是所有函数中可用的局部变量;Function不能再使用作为属性的参数。

来源:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments

换句话说,它是 - 对于大多数意图和目的 - 一个包含传递给函数的参数的数组,这对于许多原因很有用......尤其是在创建接受可变数量参数的方法或函数时。在这种情况下,所有参数都只是传递给另一个方法,this.valueMethod.

于 2013-01-06T19:07:27.260 回答