有兩個問題不太明白
最后的那個bind的實現里:
bind函數體里fToBind和fNOP應該用var定義成局部變量吧,否則不同的bind調用之間會相互覆蓋它們的值。
為什么一定要用fNOP來連接原型鏈?能不能直接設置fBound.prototype = fToBound.prototype?
最后的那個bind的實現里:
bind函數體里fToBind和fNOP應該用var定義成局部變量吧,否則不同的bind調用之間會相互覆蓋它們的值。
為什么一定要用fNOP來連接原型鏈?能不能直接設置fBound.prototype = fToBound.prototype?
2017-12-25
舉報
2017-12-26
想明白了一部分,自問自答:
應該是要定義成局部變量的。
如果直接設置fBound.prototype = fToBound.prototype,那么fBound和原函數fToBound就共用了prototype,這樣邏輯上并不合理,因為fBound實際上和fToBound是一種繼承關系,所以fBound的prototype應該安排在fToBound的下一級,這樣在外部修改fBound的prototype不會影響到原函數的prototype。不過我還是覺得這樣寫應該也沒問題:fBound.prototype = new fToBound(),而不必另外加一個fNOP,想求教。