函數鍊是一種程式設計技術,可讓開發人員建立按特定順序執行的操作序列。在 JavaScript 中,這是透過傳回函數本身和使用 this 關鍵字結合來實現的。
要了解連結的原理,讓我們來看一個工作範例:
var one = function(num) {
this.oldnum = num;
this.add = function() {
this.oldnum ;
return this;
}
if (this instanceof one) {
return this.one;
} else {
return new one(num);
}
}
var test = one(1).add().add();
在此範例中,one 函數是用數字建構的。它定義了一個 add 函數,該函數增加 oldnum 屬性並傳回它。 if 語句檢查函數是否被當作建構函式呼叫(使用 new),如果不是,則傳回 one 的新實例。
表達式 one(1).add().add() 先建立一個new 一個對象,初始值為 1。然後,在此物件上呼叫 add 函數兩次,每次都會遞增 oldnum 屬性。最後,變數 test 保存結果,即 oldnum 設定為 3 的一個物件。
相較之下,以下範例沒有正確連結:
var gmap = function() {
this.add = function() {
alert('add');
return this;
}
if (this instanceof gmap) {
return this.gmap;
} else {
return new gmap();
}
}
var test = gmap.add();
在這裡,gmap 函數不會在其方法中傳回 this,因此連結被破壞。表達式 gmap.add() 試圖呼叫 gmap 建構函數本身的 add 方法,這並不能如預期般運作。
成功連結的關鍵是 this 關鍵字的使用,它指的是當前物件。透過從方法傳回此值,呼叫者可以再次存取該物件並繼續操作序列。
連結是在 JavaScript 中編寫簡潔且富有表現力的程式碼的強大技術。透過理解上述原則,開發人員可以有效地利用連結來增強其應用程式功能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3