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