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