搜尋
首頁web前端js教程Javascript中的方法鏈(Method Chaining)介紹_javascript技巧

在尋找如何設計一個Javascript API的時候,發現了Method Chaining這個東西,方法鏈,看起來似乎很強大,也挺有意思的,而這個東西也是過去我們常看到的。 。

Javascript Method Chaining

在維基百科上有這樣的解釋:

複製程式碼 程式碼如下:

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 state tocin allowing notincine allowing the statementin. ates 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 methodbreaks orem​​yk methodlar un​​ydough methods ? methods.

拿翻譯工具翻譯了一下:

複製程式碼 程式碼如下:

方法鏈,也被稱為命名參數法,是在物件導向的程式語言呼叫的呼叫多個方法的通用語法。每一個方法傳回一個對象,允許電話連接到一起,在一個單一的聲明。連結是語法糖,省去了中間變數的需要。方法鏈也被稱為火車殘骸中由於方法來相繼發生的同一行以上的方法都鎖在即使換行通常添加方法間的數量增加。

Method Chaining 使用

目測對於方法鏈用得最多的,應該就是jQuery了。

複製程式碼 程式碼如下:

// chaining
$("#person").slideDown('slow')
   .addClass('grouped')
   .css('margin-left', '11px');

我們可以用這樣的用法來呼叫這個。 jQuery嚴重依賴連結。這使得它很容易調用的幾個方法相同的選擇。這也使得程式碼更清晰和防止執行相同的選擇幾次(提高效能)。沒有方法鏈的時候則是下面的樣子
複製程式碼 程式碼如下:

var p = $('#person');
p.slideDown('slow');
p.addClass('grouped');
p.css('margin-left', '11px');

看起來和設計模式中的builder很像,不同的是,這裡的p是方法,而不是一個類別。

Javascript 方法鏈範例

在之前我們說到Javascript 高階函數 的時候,說到的print('Hello')('World'),而這種用法的結果可能會變成這樣子。

複製程式碼 程式碼如下:

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

這是網路上的一個例子,然而也是我上一次寫鍊式呼叫的作法。看起來弱爆了。
複製程式碼 程式碼如下:

var func = (function() {
戻る{
追加: function () {
console.log('1');
戻る{
結果: function () {
console.log('2');
}
}
}
}
})();

func.add().result();


実際、すべての関数に return this があるはずなので、次のようになります:
コードをコピー コードは次のとおりです:

Func = (function() {
This.add = function(){
console.log('1');
これを返します;
};
This.result = function(){
console.log('2');
これを返します;
};
これを返してください;
});

var func = new Func();
func.add().result();


もちろん、最後の 2 つの文を置き換えることもできます
コードをコピー コードは次のとおりです:

var func = new Func();
func.add().result();


になる
コードをコピー コードは次のとおりです:

new Func().add().result();

その他

最後に、わかりにくい箇所として少し比較します:

メソッドチェーン VS プロトタイプチェーン

プロトタイプ チェーンとメソッド チェーンはいくつかの点で似ていますが、次のような違いがあります。

1. プロトタイプチェーンにはプロトタイプの使用が必要です
2. メソッドチェーンはメソッド

を使用します
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版