請問這里的this指什么?
我已經(jīng)理解了next("左運動參數(shù)")(馬車開始向左運動).then("轉向參數(shù)")(馬車轉向).then("右運動參數(shù)")(馬車開始向右運動).then()(馬車停止)這種方式。
請問這里的1,2,3號this分別指的是什么?
這里的邏輯怎么樣的?如果讓我寫,我怎么知道這樣去寫,因為這里很不符合初學者思維習慣。
這里的callback干什么用?
這里的this為什么要存到that去?
如果不用that保存this,那么this的引用會在哪被更改?
2017-12-27
2樓說的不錯.
我補充幾點
先說下apply()函數(shù)
關于 this 關鍵字 參考此鏈接
http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
我們分析一下var next = function(){...}這個函數(shù)
?第一個和第二個this都在next()函數(shù)的內(nèi)部
而第三個this就不在next()的內(nèi)部,而是屬于pageA.prototype.run = function(callback){...}這個函數(shù)內(nèi)部了.
而next()函數(shù)是全局對象global或window的方法,所以在next()函數(shù)內(nèi)部的this就是指向他們了
而pageA.prototype.run = function(callback){...}這個函數(shù)內(nèi)部的this是如下傳遞過來的
如果我們給這個實例對象命個名
那么第三個this就是由
this.run(); 傳遞過來的something對象了
我們再看bind()函數(shù)
由此,我們可以得出結論
bind()函數(shù) 綁定的是參數(shù)的值,而不是實際變量的值。
再看這個例子
由此,我們可以得出結論
bind()函數(shù) 改變了this的指向
綜上
我們完全可以這樣寫
就目前的情況也可以這樣寫
2017-12-27
再補充一下....
突然發(fā)現(xiàn)有一點沒說
就是為什么要多此一舉聲明另一個next()函數(shù),然后用apply()和bind()函數(shù)來將對象轉移呢?
我猜測啊,應該是避免異步導致的參數(shù)賦值混亂.我猜的哈
總之這樣寫應該是有其作用的
因為我聽說過一句話:任何編程方面的問題,都可以通過添加一個中間件的方式得到解決.
2017-12-27
再補充一下 callback 是回調(diào)函數(shù) 目前沒用? 刪掉也沒關系
下節(jié)應該會用到
2017-09-28
第三個this指向的是構造函數(shù)pageA new出的對象,也就是對象本身。
第一個和第二個this本應指向window,但被bind改變了指向,所以也指向對象本身。