0

我正在关注JQuery Plugins/Authoring教程,但无法弄清楚arguments16行和第18行的含义。我错过了一些真正基本的东西吗?

(function( $ ){

var methods = {
    init : function( options ) { 
    // ... 
    },
    show : function( ) {
    // ...
};

$.fn.tooltip = function( method ) {

    // Method calling logic
    if ( methods[method] ) {
        return methods[ method ].
            apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method ) {
        return methods.init.apply( this, arguments );
    } else {
        $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
    }    

};

})( jQuery );

谢谢你。

4

2 回答 2

1

arguments是一个类似数组的对象,其中包含传递给函数的参数,包括您没有为其提供变量名的参数。

它类似于数组,但不是数组。它不包含任何数组方法,例如 slice,这就是为什么你必须使用Array.prototype.slice.call(arguments,...)或者[].slice.call(arguments,...)而不是仅仅使用arguments.slice(...)

于 2013-05-02T14:59:05.780 回答
0

arguments是一个 JavaScript 保留关键字,它是一个包含传递给函数的所有参数的数组。

http://msdn.microsoft.com/en-us/library/ie/he95z461(v=vs.94).aspx

于 2013-05-02T14:57:59.343 回答