資源描述:
《淺析javascript中bind()方法的使用與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、我真正系統(tǒng)地接觸和學習黨的基本知識是在這次中級黨校的培訓班上。通過學習,了解了黨的發(fā)展歷程,對黨的性質、宗旨、任務等基本知識有了進一步的了解淺析Javascript中bind()方法的使用與實現(xiàn) 下面小編就為大家?guī)硪黄獪\析Javascript中bind()方法的使用與實現(xiàn)。小編覺得挺不錯的,現(xiàn)在分享給大家,一起跟隨小編過來看看吧 在討論bind()方法之前我們先來看一道題目: varaltwrite=document.write;? altwrite("hello");? //1.以上代碼有什么問題 //2.正確操作是怎樣的 //3.bin
2、d()方法怎么實現(xiàn) 對于上面這道題目,答案并不是太難,主要考點就是this指向的問題,altwrite()函數(shù)改變this的指向global或window對象,導致執(zhí)行時提示非法調用異常,正確的方案就是使用bind()方法: altwrite.bind(document)("hello")? 當然也可以使用call()方法: altwrite.call(document,"hello")? 本文的重點在于討論第三個問題bind()方法的實現(xiàn),在開始討論bind()的實現(xiàn)之前,我們先來看看bind()方法的使用: 綁定函數(shù)對黨的認識也有了進一步的
3、提高。才真正體會到了中國共產(chǎn)黨的偉大、光榮和正確,更感到只有中國共產(chǎn)黨是全中國最廣大人民利益的忠實代表我真正系統(tǒng)地接觸和學習黨的基本知識是在這次中級黨校的培訓班上。通過學習,了解了黨的發(fā)展歷程,對黨的性質、宗旨、任務等基本知識有了進一步的了解 bind()最簡單的用法是創(chuàng)建一個函數(shù),使這個函數(shù)不論怎么調用都有同樣的this值。常見的錯誤就像上面的例子一樣,將方法從對象中拿出來,然后調用,并且希望this指向原來的對象。如果不做特殊處理,一般會丟失原來的對象。使用bind()方法能夠很漂亮的解決這個問題: this.num=9;? varmymodul
4、e={? ?num:81, ?getNum:function(){returnthis.num;} }; module.getNum();//81 vargetNum=module.getNum;? getNum();//9,因為在這個例子中,"this"指向全局對象 //創(chuàng)建一個'this'綁定到module的函數(shù) varboundGetNum=getNum.bind(module);? boundGetNum();//81? 偏函數(shù)(PartialFunctions) PartialFunctions也叫PartialApplic
5、ations,這里截取一段關于偏函數(shù)的定義: Partialapplicationcanbedescribedastakingafunctionthatacceptssomenumberofarguments,binding對黨的認識也有了進一步的提高。才真正體會到了中國共產(chǎn)黨的偉大、光榮和正確,更感到只有中國共產(chǎn)黨是全中國最廣大人民利益的忠實代表我真正系統(tǒng)地接觸和學習黨的基本知識是在這次中級黨校的培訓班上。通過學習,了解了黨的發(fā)展歷程,對黨的性質、宗旨、任務等基本知識有了進一步的了解valuestooneormoreofthosearguments,a
6、ndreturninganewfunctionthatonlyacceptstheremaining,un-boundarguments. 這是一個很好的特性,使用bind()我們設定函數(shù)的預定義參數(shù),然后調用的時候傳入其他參數(shù)即可: functionlist(){? ?returnArray.prototype.slice.call(arguments); } varlist1=list(1,2,3);//[1,2,3] //預定義參數(shù)37 varleadingThirtysevenList=list.bind(undefined,37);
7、 varlist2=leadingThirtysevenList();//[37]? varlist3=leadingThirtysevenList(1,2,3);//[37,1,2,3]? 和setTimeout一起使用 一般情況下setTimeout()的this指向window或global對象。當使用類的方法時需要this指向類實例,就可以使用bind()將this綁定到回調函數(shù)來管理實例?! unctionBloomer(){? ?this.petalCount=Math.ceil(Math.random()*12)+1;對黨的認識也
8、有了進一步的提高。才真正體會到了中國共產(chǎn)黨的偉大、光榮和正確,更感