Skip to content

메소드 체이닝

메소드 체이닝(Method Chaining) 은 코드를 작성할 때 클래스 내의 메소드를 연속적으로 사용하기 위해 다음 메소드를 이어서 작성하는 프로그래밍 기법이다. 일반적으로 배열의 메소드나 jQuery 라이브러리에서 주로 사용하는 방법이기도 하다.

아래 Company라는 클래스가 있다고 가정한다.

javascript
class Company {
	constructor() {
		this.uniqueId = 0;
		this.name = '';
		this.country = '';
	}

	setName(name) {
		this.name = name;

		return this;
	}

	setUniqueId(id) {
		this.uniqueId = id;

		return this;
	}

	setCountry(country) {
		this.country = country;

		return this;
	}
}

자바스크립트에서는 특정 클래스의 메소드를 사용할 때 다음과 같이 사용한다.

javascript
const company = new Company();

company.setName('Samsung');
company.setUniqueId(12345678);
company.setCountry('South Korea');

위와 같이 한번에 사용해야 하는 메소드가 많으면 많을수록 코드가 복잡해 보일 수 있다. 메소드 체이닝을 활용한다면 다음과 같이 간략하게 코드를 작성할 수 있다.

javascript
const company = new Company();

company.setName('Samsung').setUniqueId(12345678).setCountry('South Korea');

또는 다음과 같이 개행으로 구분하여 사용해도 된다.

javascript
const company = new Company();

company.setName('Samsung').setUniqueId(12345678).setCountry('South Korea');

다만 메소드 체이닝을 사용하기 위한 조건이 있다. 메소드 체이닝에 사용되는 메소드는 모두 this로 리턴되어야 한다.

javascript
class Company {
	setCountry(country) {
		this.country = country;

		return this; // <---- Add this
	}
}

이렇게 해야만 이전 메소드에서 리턴된 객체로 다시 메소드를 호출할 수 있다.

메소드 체이닝은 코드의 복잡성에 따라서 간결해보이면서도 코드 해석에 대해 혼동을 줄 수 있기 때문에 상황에 따라서 사용하는 것이 좋다.

또한 매번 자기 자신의 객체를 리턴하기 때문에 성능면에서는 좋지 않을 수 있다.