js理解 call( ) | apply( ) | caller( ) | callee( )
生活随笔
收集整理的這篇文章主要介紹了
js理解 call( ) | apply( ) | caller( ) | callee( )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
被js的這幾個(gè)方法搞的this暈頭轉(zhuǎn)向,下定決心搞清楚; 1、call( )和apply( ):兩者都可以將函數(shù)綁定到另外一個(gè)對(duì)象上去運(yùn)行,只是參數(shù)的傳遞方式不同,兩者都可以使當(dāng)前函數(shù)擁有另一個(gè)對(duì)象的屬性和方法,實(shí)現(xiàn)js下的繼承: call( ): a.call( b[arg1,arg2....] ); 所有函數(shù)內(nèi)部的this指針都會(huì)指向b,如果沒有b,this指針會(huì)指向Global; 實(shí)現(xiàn)了a繼承的b的屬性和方法; apply( ) : a.fn.apply(b , arguments); a的fn方法加載到b上調(diào)用,this指向b; 2、caller : 在一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí),被調(diào)用函數(shù)會(huì)自動(dòng)生成一個(gè)caller屬性,指向調(diào)用它的函數(shù)對(duì)象。如果該函數(shù)當(dāng)前未被調(diào)用,或并非被其他函數(shù)調(diào)用,則caller為null。 3、callee : 當(dāng)函數(shù)被調(diào)用時(shí),它的arguments.callee對(duì)象就會(huì)指向自身,也就是一個(gè)對(duì)自己的引用。 由于arguments在函數(shù)被調(diào)用時(shí)才有效,因此arguments.callee在函數(shù)未調(diào)用時(shí)是不存在的(即null.callee),且解引用它會(huì)產(chǎn)生異常; 可以用來(lái)遞歸計(jì)算,驗(yàn)證參數(shù): var sum = function(n){ if (n <= 0){? ? ? ? ? ? ? ? ? ? ? ? return 1; } else { return n + arguments.callee(n - 1) } }
轉(zhuǎn)載于:https://www.cnblogs.com/winterRel/p/5112425.html
總結(jié)
以上是生活随笔為你收集整理的js理解 call( ) | apply( ) | caller( ) | callee( )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【刷题】BZOJ 4657 tower
- 下一篇: SQL中常用系统函数