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 特權方法簡單介紹JS
- js 函式作用域鏈簡單介紹JS函式
- 簡單介紹js 陣列 fill() 填充方法JS陣列
- JSON簡單介紹JSON
- nodejs簡單介紹NodeJS
- javascript鏈式呼叫簡單介紹JavaScript
- JSON物件簡單介紹JSON物件
- js WebSocket用法簡單介紹JSWeb
- js MIPS乘法模擬的方法簡單介紹JS
- js字串連線簡單介紹JS字串
- js cookie路徑簡單介紹JSCookie
- js短路運算簡單介紹JS
- js與&&運算子簡單介紹JS
- js如何阻止表單提交簡單介紹JS
- javascript方法過載簡單介紹JavaScript
- javascript實現鏈式呼叫簡單介紹JavaScript
- 簡單介紹一下 JSONJSON
- angularJS的router用法簡單介紹AngularJS
- js style.cssText用法簡單介紹JSCSS
- js事件委託原理簡單介紹JS事件
- js isPrototypeOf()函式用法簡單介紹JS函式
- node.js操作mongodb簡單介紹Node.jsMongoDB
- ReactJs環境配置簡單介紹ReactJS
- require.js的作用簡單介紹UIJS
- 是什麼JSON,簡單介紹JSON
- JSON的優點簡單介紹JSON
- js 私有方法屬性和公有方法屬性簡單介紹JS
- json字串與json物件簡單介紹JSON字串物件
- 簡單介紹java中的equals()方法Java
- 簡單介紹PostgreSQL解析URL的方法SQL
- 簡單介紹oracle重置序列的方法Oracle
- 簡單介紹NMS的實現方法
- javascript作用域和作用域鏈簡單介紹JavaScript
- iOS Runtime簡單介紹,以及不同類的Method SwizzlingiOS
- orm的method屬性值post和get的區別簡單介紹ORM
- js將陣列轉換成CSV格式的方法簡單介紹JS陣列
- js使用yield模擬多執行緒的方法簡單介紹JS執行緒
- js isNaN函式的用法簡單介紹JSNaN函式