摘要:和方法大作用致相同,不同的方法接受的參數(shù),必須要明確所有要處理的參數(shù),也就是說,參數(shù)必須要逐個列舉,而方法可以選擇數(shù)組作為參數(shù),因此可以在具體的環(huán)境中,看看是選擇還是方法。
在函數(shù)內部有著一個名叫arguments的類數(shù)組對象,內部包含著傳入函數(shù)的所有參數(shù),在arguments對象中,有一個名叫callee的屬性,其作用可見下面這個階乘的栗子:
function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); //這里也可以寫成如下方式 return num*arguments.callee(num-1); } } console.log(factorial(5))//120
可以看到的是,arguments.callee這個屬性作為一個指針指向了擁有arguments對象的函數(shù),也可以認為是當前正在執(zhí)行的函數(shù),而且可以消除與函數(shù)名factorial的耦合,不過值得注意的是,在ES5的嚴格模式下,調用arguments.callee方法會報錯。
函數(shù)內部還有一個對象,就是我們所熟悉的this對象,this對象引用的是函數(shù)執(zhí)行的環(huán)境對象,簡單來說,this總是指向函數(shù)的直接調用者,而非間接調用者,在對象中,如果有new關鍵字,this指向new出來的那個對象。
在函數(shù)對象中,有個屬性名為caller,這個屬性作為一個引用,保存著調用當前函數(shù)的其他函數(shù)的引用,如下
(function(){ bar();//function (){bar();} })(); function bar(){ console.log(bar.caller)//arguments.callee.caller }
可以看到的是,匿名函數(shù)內部調用了bar函數(shù),在bar函數(shù)內部,因為 bar.calller指向了調用bar的匿名函數(shù),所以執(zhí)行bar.caller就等于匿名函數(shù)的源代碼,同callee一樣的是,在ES5中訪問caller屬性會報錯。
函數(shù)內部除了以上容易混淆的屬性以外,還有些方法有時候也會讓人比較困惑,例如call跟apply,show the code
function add(a,b){ return a+b; } function foo(a,b){ console.log(add.call(this,a,b)) } function bar(a,b){ console.log(add.apply(this,[a,b])) } foo(20,20)//40 bar(20,20)//40
可以看到的是,call和apply兩個方法作用都是在特定的作用域上面調用函數(shù),換句話說,就是改變函數(shù)體內this指向,在foo和bar函數(shù)中,我們利用call和apply將函數(shù)的this值綁定到add函數(shù)上,因此它們便可以對內部的參數(shù)執(zhí)行add函數(shù)里面的加法操作。
call和apply方法大作用致相同,不同的方法接受的參數(shù),call必須要明確所有要處理的參數(shù),也就是說,參數(shù)必須要逐個列舉,而apply方法可以選擇數(shù)組作為參數(shù),因此可以在具體的環(huán)境中,看看是選擇call還是apply方法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/84268.html
摘要:中函數(shù)是一等公民,所有的函數(shù)實際上是一個對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調用,也可以像傳遞參數(shù)一樣將函數(shù)傳遞給另一個函數(shù)。中函數(shù)沒有重載的概念,當定義兩個同名函數(shù)的時候,前一個函數(shù)會被覆蓋掉,舉個栗子。 JavaScript中函數(shù)是一等公民,所有的函數(shù)實際上是一個Function對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調用,也可以像傳...
摘要:另外如果為負數(shù),則表示從字符串尾部開始算起。將要搜尋的子字符串。從當前字符串的哪個索引位置開始搜尋子字符串默認為。否則則會返回一個數(shù)組,數(shù)組中存放所有符合要求的子字符串,并且沒有和屬性。 原文鏈接 JavaScript 字符串用于存儲和處理文本。因此在編寫 JS 代碼之時她總如影隨形,在你處理用戶的輸入數(shù)據(jù)的時候,在讀取或設置 DOM 對象的屬性時,在操作 Cookie 時,在轉換各種...
摘要:極簡爬蟲攻防戰(zhàn)紀要爬蟲是構建搜索引擎的基礎負責抓取網頁信息并對網頁識別分類及過濾。爬蟲方終于鎖定了第一場戰(zhàn)役的勝局由于斷崖式技術的出現(xiàn),反爬方在瀏覽器識別戰(zhàn)役上望風披靡。經過反爬方的精心運作,逐漸有效削弱了敵方的攻勢。 極簡爬蟲攻防戰(zhàn)紀要 ? ??爬蟲是構建搜索引擎的基礎, 負責抓取網頁信息并對網頁識別、分類及過濾。我們熟識的電商、搜索、新聞及各大門戶網站都有強大的爬蟲集群在每...
摘要:流程創(chuàng)建一個文件獲取當前的活動標簽通過行列坐標獲取單元格,并向其插入數(shù)據(jù)這里有種方式生成文件并輸入代碼預覽等價于除非是根目錄設置當前腳本所在目錄實例化類獲取當前活動標簽填充數(shù)據(jù)方式一姓名性別年齡射可可男男男填充數(shù) 流程 創(chuàng)建一個excel文件 獲取當前的活動sheet標簽 通過行列坐標獲取單元格,并向其插入數(shù)據(jù)(這里有2種方式) 生成文件并輸入showImg(https://seg...
摘要:更多資源請文章轉自月份前端資源分享的作用數(shù)組元素隨機化排序算法實現(xiàn)學習筆記數(shù)組隨機排序個變態(tài)題解析上個變態(tài)題解析下中的數(shù)字前端開發(fā)筆記本過目不忘正則表達式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛入門的前端工程師的前后端交互指南物聯(lián)網世界的 更多資源請Star:https://github.com/maidishike... 文章轉自:https://github.com/jsfr...
閱讀 788·2021-11-24 10:19
閱讀 1187·2021-09-13 10:23
閱讀 3509·2021-09-06 15:15
閱讀 1836·2019-08-30 14:09
閱讀 1768·2019-08-30 11:15
閱讀 1905·2019-08-29 18:44
閱讀 998·2019-08-29 16:34
閱讀 2520·2019-08-29 12:46