js方法鏈(Method Chaining)簡單介紹
所謂的方法鏈也就是大家常說的鏈式呼叫,本章節就對此做一下介紹,希望能夠給需要的朋友帶來一定的幫助。
Javascript Method Chaining:
維基百科上有這樣的解釋:
[JavaScript] 純文字檢視 複製程式碼Method chaining, also known as named parameter idiom, is a common syntax for invoking multiple method calls in object-oriented programming languages. Each method returns an object, allowing the calls to be chained together in a single statement.Chaining is syntactic sugar which eliminates the need for intermediate variables. A method chain is also known as a train wreck due to the increase in the number of methods that come one after another in the same line that occurs as more methods are chained togethe even though line breaks are often added between methods.
大致的翻譯如下,可能會不夠精準:
[JavaScript] 純文字檢視 複製程式碼方法鏈,也被稱為命名引數法,是在物件導向的程式語言呼叫的呼叫多個方法的通用語法。每一個方法返回一個物件,允許電話連線到一起,在一個單一的宣告。連結是語法糖,省去了中間變數的需要。方法鏈也被稱為火車殘骸中由於方法來相繼發生的同一行以上的方法都鎖在即使換行通常新增方法間的數量增加。
Method Chaining使用:
估計使用方法鏈最多的可能就是jquery了,當然是以本人的視野範圍為衡量標準的。
[JavaScript] 純文字檢視 複製程式碼// chaining $("#person").slideDown('slow') .addClass('grouped') .css('margin-left', '11px');
jQuery嚴重依賴於連結。這使得它很容易呼叫的幾個方法相同的選擇。這也使得程式碼更清晰和防止執行相同的選擇幾次(提高效能)。沒有方法鏈的時候則是下面的樣子:
[JavaScript] 純文字檢視 複製程式碼var p = $('#person'); p.slideDown('slow'); p.addClass('grouped'); p.css('margin-left', '11px');
看上去和設計模式中的builder很像,不同的是,這裡的p是方法,而不是一個類。
Javascript 方法鏈示例:
在之前說到Javascript高階函式的時候,說到的print('Hello')('World'),而這種用法的結果可能會變成這樣子。
[JavaScript] 純文字檢視 複製程式碼function f(i){ return function(e){ i+=e; return function(e){ i+=e; return function(e){ alert(i+e); }; }; }; }; f(1)(2)(3)(4); //10
這是網上的一個例子,然而也是本人上一次寫鏈式呼叫的作法。
[JavaScript] 純文字檢視 複製程式碼var func = (function() { return{ add: function () { console.log('1'); return{ result: function () { console.log('2'); } } } } })(); func.add().result();
實際上應該在每個function都要有個return this,於是就有了:
[JavaScript] 純文字檢視 複製程式碼Func = (function() { this.add = function(){ console.log('1'); return this; }; this.result = function(){ console.log('2'); return this; }; return this; }); var func = new Func(); func.add().result();
當然我們也可以將最後的兩句
[JavaScript] 純文字檢視 複製程式碼var func = new Func(); func.add().result();
變成
[JavaScript] 純文字檢視 複製程式碼new Func().add().result();
其他:
最後作為一個迷惑的地方的小比較:
Method Chaining VS prototype Chaining
原型鏈與方法鏈在某些方面上是差不多的,不同的地方或許在於
1.原型鏈是需要用原型
2.方法鏈則是用方法
相關文章
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- CSRF簡單介紹及利用方法
- 簡單介紹PostgreSQL解析URL的方法SQL
- 簡單介紹NMS的實現方法
- 簡單介紹oracle重置序列的方法Oracle
- 簡單介紹java中的equals()方法Java
- js迴圈中reduce的用法簡單介紹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簡單介紹
- 簡單介紹Vue中使用js-cookie詳情VueJSCookie
- 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 介紹 及光流的簡單介紹
- form表單的簡單介紹ORM