JavaScriptのメソッドチェーンとは?初心者向けに基本と実践例をわかりやすく解説
メソッドチェーンとは
メソッドチェーン(Method Chaining)は「カスケーディング(Cascading)」とも呼ばれ、1つの連続したコードの中で、同じオブジェクトのメソッドを次々と呼び出していく手法です。この仕組みを活用すると、同じオブジェクト名を何度も書く冗長なコードを避けられます。ここでは、車(Car)クラスを例に、メソッドチェーンがどのようにコードの重複をなくすのかを見ていきましょう。
通常の実装例
まずは、ごく一般的なCarクラスの実装です。
class Car {
constructor() {
this.wheels = 4;
this.doors = 4;
this.topSpeed = 100;
this.fuelCapacity = "400 Litres";
}
setWheels(w) {
this.wheels = w;
}
setDoors(d) {
this.doors = d;
}
setTopSpeed(t) {
this.topSpeed = t;
}
setFuelCapacity(fc) {
this.fuelCapacity = fc;
}
displayCarProps() {
console.log(`Your car has ${this.wheels} wheels, ${this.doors} doors with a top speed of ${this.topSpeed} and fuel capacity of ${this.fuelCapacity}`);
}
}
let sportsCar = new Car();
sportsCar.setDoors(2);
sportsCar.setTopSpeed(250);
sportsCar.setFuelCapacity("600 Litres");
sportsCar.displayCarProps();
実行結果
Your car has 4 wheels, 2 doors with a top speed of 250 and fuel capacity of 600 Litres
sportsCarが何度も不必要に繰り返されているのがわかりますね。この重複は、メソッドチェーンを使えば解消できます。方法はシンプルで、各セッターメソッドの最後にthisを返す(return this)ようにするだけです。こうすることで、メソッドの戻り値としてオブジェクト自身が得られるため、そのまま続けて別のメソッドを呼び出せるようになります。
メソッドチェーン対応版の実装
各セッターでthisを返すように変更したコードがこちらです。
class Car {
constructor() {
this.wheels = 4;
this.doors = 4;
this.topSpeed = 100;
this.fuelCapacity = "400 Litres";
}
setWheels(w) {
this.wheels = w;
return this;
}
setDoors(d) {
this.doors = d;
return this;
}
setTopSpeed(t) {
this.topSpeed = t;
return this;
}
setFuelCapacity(fc) {
this.fuelCapacity = fc;
return this;
}
displayCarProps() {
console.log(`Your car has ${this.wheels} wheels, ${this.doors} doors with a top speed of ${this.topSpeed} and fuel capacity of ${this.fuelCapacity}`);
}
}
これで、車オブジェクトの生成部分を、より読みやすく重複の少ないコードに書き換えられます。
メソッドチェーンを使った呼び出し例
let sportsCar = new Car()
.setDoors(2)
.setTopSpeed(250)
.setFuelCapacity("600 Litres")
.displayCarProps();
実行結果
Your car has 4 wheels, 2 doors with a top speed of 250 and fuel capacity of 600 Litres
まとめ
メソッドチェーンは「流れるようなインターフェース(Fluent Interface)」とも呼ばれます。オブジェクト名を何度も書いて処理の流れを断ち切ることなく、メソッドだけで一気通貫に操作できるためです。セッター系メソッドでthisを返す習慣をつければ、jQueryやPromiseなどでも採用されているこの洗練された書き方を、自分のコードにも簡単に取り入れることができます。
-
JavaScriptのsort()メソッドとは?配列ソートの基本と比較関数の使い方を解説
JavaScriptのsort()メソッドは、配列の要素を並べ替えるための組み込みメソッドです。アルファベット順・数値順といった並べ替えの基準に加え、昇順・降順も自由に指定できます。デフォルトでは要素が文字列として比較され昇順にソートされますが、比較関数を渡すことで任意の順序を実現できます。 なお、sort()は元の配列そのものを変更する「破壊的メソッド」である点にも注意しましょう。元の配列を保持したい場合は、スプレッド構文([...arr])などで事前にコピーしておくのが安全です。 コード例 以下は、sort()メソッドを使って配列をソートするシンプルなサンプルコードです。 <!DO
-
JavaScriptのObject.fromEntries()メソッドとは?配列やMapをオブジェクトに変換する方法
JavaScriptのObject.fromEntries()メソッドは、「キー」と「値」のペアを持つ配列やMapなどのイテラブル(反復可能なオブジェクト)を、ひとつのオブジェクトに変換するためのメソッドです。 ES2019で追加されたこのメソッドは、オブジェクトを [key, value] 形式の配列に変換する Object.entries() と対になる存在であり、両者を組み合わせることで、オブジェクトのフィルタリングやデータ形式の変換を簡潔に記述できます。 基本構文 Object.fromEntries(iterable) 引数には、[キー, 値] のペアを要素として持つ配列やMapな