這段代碼看不懂,求解答一下
var that = this; ? ?var next = function(){ ? ? ? ?return this.next.apply(that,arguments) ? ?}.bind(this) 這段代碼實(shí)現(xiàn)的是什么功能,看不懂,有大神解答一下嗎
var that = this; ? ?var next = function(){ ? ? ? ?return this.next.apply(that,arguments) ? ?}.bind(this) 這段代碼實(shí)現(xiàn)的是什么功能,看不懂,有大神解答一下嗎
2016-01-10
舉報(bào)
2016-01-11
這樣好理解一點(diǎn),其實(shí)這里this,that都一樣,因?yàn)閚ext方法在下面馬上要調(diào)用了,所以在這個(gè)方法內(nèi)作用域this和that都一樣;這個(gè)this指代的是pageA()的實(shí)例,next()函數(shù)的意思就是,調(diào)用pageA()的next方法作用與新的對(duì)象上(但that還是pageA本身),并且使用新的參數(shù);然后再將返回的方法改變一下指針,變成that(但還是pageA本身),然后運(yùn)行下。
用人話說(shuō)就是,bind的this(你當(dāng)成that好了,就是外層函數(shù)的this)代替了next匿名函數(shù)中的this,然后在調(diào)用變成that的next方法作用于that自身并且使用next匿名函數(shù)的新參數(shù)。
所以你發(fā)現(xiàn),我把代碼改成上面這樣竟然也能完美運(yùn)行!無(wú)非就是調(diào)用了一下pageA的next方法嘛!
所以作者只是在花樣曬技術(shù),被玩死的內(nèi)存君表示哭暈在廁所。
你還可以這樣玩。
這是個(gè)玩弄指針和顛來(lái)倒去apply、bind的問題,對(duì)了,還有一個(gè)call方法。
2017-04-27
對(duì)于argument,請(qǐng)看官方文檔:http://www.w3school.com.cn/js/pro_js_functions_arguments_object.asp
2016-06-10
這個(gè)課程的作者真的各種炫,完全不考慮實(shí)際的方便。