在 JavaScript 中,有時我們可以使用鏈式方法調用,像這樣:

car.start().drive()

這樣做非常方便。

相比於這樣寫:

car.start()
car.drive()

我們可以將其簡化為一行。

這是可能的,只要每個方法都返回對象本身。換句話說,實現必須類似於這樣:

const car = {
 start: function() {
 console.log('start')
 return this
 },
 drive: function() {
 console.log('drive')
 return this
 }
}

需要注意的是,你不能使用箭頭函數,因為箭頭函數中的 this 不會綁定到對象實例。

我喜歡始終使用箭頭函數,這是其中一種不能使用箭頭函數的情況。

當你不從方法返回一組值時,鏈式方法調用非常有用,否則你顯然需要將方法調用賦值給變量,而鏈式調用是不可能的:

const result = car.start()
if (result) {
 car.drive()
}