객체 속성에 함수를 담아 데이터와 동작을 연결합니다.
메서드는 객체의 상태와 관련된 동작을 표현합니다. 일반 메서드 문법 안의 this는 호출한 객체를 가리키지만 함수를 분리해 호출하면 this가 달라질 수 있습니다.
counter.increase()는 인수가 없어 step이 기본값 1이 되고 value가 1이 됩니다. 이어서 counter.increase(3)이 3을 더해 value가 4가 되므로 출력은 메서드가 바꾼 값: 4입니다. 두 호출 모두 점 앞의 counter가 this가 되어 같은 객체의 value를 고치고, reset은 정의만 되어 있을 뿐 호출되지 않아 결과에 영향을 주지 않습니다.
increase가 this.value 대신 this를 돌려주게 바꾸면 counter.increase().increase(3)처럼 호출을 이어 쓰는 메서드 체이닝이 가능해집니다. 지금처럼 숫자를 돌려주는 상태에서 이어 쓰면 첫 호출의 결과가 숫자 1이라 두 번째 increase를 찾지 못하고 TypeError가 납니다.
상태와 관계없는 함수까지 무조건 객체 메서드로 넣을 필요는 없습니다.
직접 바꿔보세요decrease 메서드를 추가하고 호출하세요.