- 需求:最近面試,面試官問(wèn)能不能現(xiàn)場(chǎng)比劃一個(gè)bind函數(shù)。
- 小哥哥有一個(gè)很好的習(xí)慣就是從來(lái)不著急寫代碼,既然有了需求那咱就來(lái)分析分析它 !
- 我們先要想一下Function.prototype.bind 函數(shù)可以實(shí)現(xiàn)那些功能 。
- 改變this指向
- 這個(gè) bind 還可以傳參,fn.bind(obj,...arg)
- 返回了一個(gè)函數(shù) ,并且不立即執(zhí)行,這就是bind,和call,apply的區(qū)別吧?
注意:前方高能,小生不才,哪里寫的不到位希望各位看官指正。
- 廢話不說(shuō),有了需求,我們也分析了需求,擼唄。
//有逼格一點(diǎn),咱也來(lái)個(gè)原型鏈編程 Function.prototype.myBind = function (target) { var target = target || window //返回函數(shù)需要用到的參數(shù) var outArgs = [].slice.call(arguments, 1) //返回的那個(gè)函數(shù) var fn = () => { //返回的這個(gè)函數(shù)在執(zhí)行的時(shí)候,還有可能在傳參,我們把它拿出來(lái) var innArgs = [].slice.call(arguments, 0) //最后執(zhí)行這個(gè)函數(shù)唄 return this.apply(target, outArgs.concat(innArgs)) } return fn } var name = "我真的很帥" var obj = { name: "我很帥" } function testBind() { console.log(this.name) } var test = testBind.myBind(obj) console.log(test()) //我很帥,哇塞,this指向改變了,也返回了一個(gè)函數(shù),功能實(shí)現(xiàn)- 第一次寫文章,有啥不對(duì)的地方希望大家指正,以后我會(huì)每天寫一點(diǎn)小東西,把自己掌握的東西分享出來(lái)。
javaScript之 bind
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- "use strict";function _classCallCheck(e,t){if(!(e instanc...
- 單例模式 適用場(chǎng)景:可能會(huì)在場(chǎng)景中使用到對(duì)象,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見(jiàn)的單例模式,...
- 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
- SSM框架的Web程序主要用到了三個(gè)技術(shù): 1.Spring:用到了注解和自動(dòng)裝配,就是Spring的兩個(gè)精髓IO...
- 懶癥犯起來(lái)還真是無(wú)可救藥,難怪說(shuō)是懶癌癥呢。外面的東西怕不干凈,自己又懶得做,于是就會(huì)削尖腦袋想辦法,怎么填飽肚皮...