Function.prototype.bind()方法用法簡單介紹
本章節通過程式碼例項簡單對prototype.bind()方法做一下介紹,希望能夠給對它還比較陌生的朋友帶來一定幫助。
建議在閱讀本章節之前事先參閱javascript this用法詳解和javascript prototype原型簡單介紹一章節。
大家可能遇到過這樣的情況,為了在其他的函式中保持this上下文的一致性,會使用下面類似的程式碼:
[JavaScript] 純文字檢視 複製程式碼var that=this;
也就是將this指向物件的引用賦值給變數that,以供後面使用。
下面看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var obj={ show:function(){ }, done:function(){ }, getOther:function(func){ func() }, render:function(){ var that = this; this.getOther(function () { that.show(); that.done(); }); } }
在以上程式碼中,將this指向物件的引用賦值給that,這樣當呼叫obj.render()方法的時候,能夠確保呼叫的show()方法和done方法是屬於obj物件的,否則是呼叫的window物件上的方法。但是上面的方式稍顯繁瑣,ES5也提供了Function.prototype.bind(),解決上面的問題也就更為輕鬆,程式碼修改如下:
[JavaScript] 純文字檢視 複製程式碼render:function(){ var that = this; this.getOther(function () { this.show(); this.done(); }.bind(this)); }
上面程式碼利用bind()實現了我們的要求,下面就介紹一下它的語法:
語法結構:
[JavaScript] 純文字檢視 複製程式碼fun.bind(thisArg[, arg1[, arg2[, ...]]])
此方法會建立一個新函式,稱為繫結函式.當呼叫這個繫結函式時,繫結函式會以建立它時傳入bind方法的第一個引數作為this,傳入bind方法的第二個以及以後的引數加上繫結函式執行時本身的引數按照順序作為原函式的引數來呼叫原函式.
bind()的程式碼我們可以大概描述如下:
[JavaScript] 純文字檢視 複製程式碼Function.prototype.bind=function(thisArg,arg1,arg2) { var fn = this; return function() { return fn.apply(scope,arg1,arg2); }; }
也就是說修改了函式的呼叫物件。
相關文章
- js迴圈中reduce的用法簡單介紹JS
- 簡單介紹Python中異常處理用法Python
- 簡單介紹SQLserver中的declare變數用法SQLServer變數
- CSRF簡單介紹及利用方法
- 簡單介紹PostgreSQL解析URL的方法SQL
- 簡單介紹NMS的實現方法
- 簡單介紹oracle重置序列的方法Oracle
- 簡單介紹java中的equals()方法Java
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- vue匯出excel(簡單方法完整介紹)VueExcel
- Map簡單介紹
- SVG簡單介紹SVG
- Clickjacking簡單介紹
- 【Pandas】簡單介紹
- ActiveMQ簡單介紹MQ
- JSON簡單介紹JSON
- RPC簡單介紹RPC
- Python簡單介紹Python
- KVM簡單介紹
- RMI簡單介紹
- HTML簡單介紹HTML
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- ajax簡單介紹
- AOP的簡單介紹
- 簡單介紹克隆 JavaScriptJavaScript
- 禪道簡單介紹
- Apache Curator簡單介紹Apache
- spark簡單介紹(一)Spark
- Flutter key簡單介紹Flutter
- Ansible(1)- 簡單介紹
- Webpack 的簡單介紹Web
- Git_簡單介紹Git
- jQuery Validate簡單介紹jQuery
- JSON物件簡單介紹JSON物件
- <svg>元素簡單介紹SVG
- 簡單介紹 ldd 命令
- Flownet 介紹 及光流的簡單介紹