js原生方式實現bind方法


1、思路

(1)因為bind方法不會立即執行函數,需要返回一個待執行的函數(這里用到閉包,可以返回一個函數)return function(){}

(2)作用域綁定,這里可以使用apply或者call方法來實現 xx.call(yy)/xx.apply(yy)

(3)參數傳遞,由於參數的不確定性,需要用apply傳遞數組(實例更明了xx.apply(yy,[...Array...]),如果用call就不太方便了,因為call后面的參數需要一個個列出來。

 

2、實現

Function.prototype.bind = function(newThis) { var aArgs = Array.prototype.slice.call(arguments, 1) //拿到除了newThis之外的預置參數序列
                var that = this
                return function() { return that.apply(newThis, aArgs.concat(Array.prototype.slice.call(arguments))) //綁定this同時將調用時傳遞的序列和預置序列進行合並
 } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM