簡單了解JavaScript arguement原理及作用
問題
var length = 10; function fn(){ alert(this.length); } var obj = { length: 5, method: function(fn) { arguments[0]() } } obj.method(fn);//1
這段代碼中的arguments[0]()是第一個參數(shù)?帶一對小括號是什么意思?
理解
我們可以先從最后調(diào)用obj.method(fn)開始理解。
1.obj是對象,method()是obj的方法,fn是method()的參數(shù),fn是函數(shù)的名,他引用對應的函數(shù)。arguments是JavaScript的一個內(nèi)置對象。
An Array-like object corresponding to the arguments passed to a function.
The arguments object is a local variable available within all functions; arguments as a property of Function can no longer be used. Description:You can refer to a function‘s arguments within the function by using the arguments object. This object contains an entry for each argument passed to the function, the first entry's index starting at 0.
2.arguments是用來取得method(fn)的參數(shù)的類數(shù)組,在這里也就是fn,即arguments[0]===fn或arguments.0===fn(0就是arguments的一個屬性)。所以arguments[0]()就等于fn()。
是不是到這里要開始風中凌亂了,this.length究竟是指向那個對象呢? 可以這樣理解:
arguments = { 0: fn, //也就是 functon() {alert(this.length)} 1: 第二個參數(shù), //沒有 2: 第三個參數(shù), //沒有 ..., length: 1 //只有一個參數(shù) }
最后,這個1就是arguments.length,也就是本函數(shù)參數(shù)的個數(shù)。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js實現(xiàn)選項卡內(nèi)容切換以及折疊和展開效果【推薦】
本文主要介紹了js實現(xiàn)選項卡內(nèi)容切換以及文字折疊和展開效果的示例代碼。具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01javascript遍歷json對象的key和任意js對象屬性實例
下面小編就為大家?guī)硪黄猨avascript遍歷json對象的key和任意js對象屬性實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03tsc性能優(yōu)化Project References使用詳解
這篇文章主要為大家介紹了tsc性能優(yōu)化Project References使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11