2011-11-14 78 views

回答

44

Function.arguments過時,但它只是有利於香草arguments對象,函數內的可用的棄用。 (例如,使用x = arguments[i];而不是x = theFunc.arguments[i];

這是現在首選的(並且就像你說的,非常有用的)訪問所收到的序號參數的方法。

+0

啊,這就解釋了!非常感謝。 –

+0

這是有道理的。如果Javascript想要一些多線程支持,這樣的全局有狀態對象正在被查殺。 –

+0

爲什麼'Function.arguments'不推薦使用?它允許你直接訪問嵌套函數內父函數的參數,這是你不能用'arguments'對象實現的。 – Taurus

1

callee已被棄用,但參數在許多應用程序中使用。我不知道參數是否被棄用。即使函數中沒有定義(params),您也可以使用它來獲取函數的所有參數。

大多數時候我用我開發jQuery插件。喜歡的東西:

$.fn.tooltip = function(method) { 
    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'); 
    }  
    }; 

正如你所看到的唯一方法是作爲參數傳遞,但內第一,如果參數的第一個值後分裂。這樣你可以傳遞一個函數名,以及這個函數使用的所有參數。

完整的示例:http://docs.jquery.com/Plugins/Authoring

1

號,參數數組沒有在最新的5.1版本的規範棄用(見60頁)。但是,只有代碼不處於嚴格模式時,纔可以使用caller對象。