객체와 메소드

연관된 여러 값을 하나로 묶고 싶을 때 객체를 활용했던 것처럼
연관성 있는 여러 함수들을 하나로 묶고싶은 경우도 있다.
이때도 객체를 사용하면 된다.

객체의 프로퍼티에는 어떤 자료형이든 저장할 수 있기 때문에
프로퍼티값으로 함수를 넣어주면 되는데, 이런 함수를 객체의 메소드라고 한다.

let greetings = {
// 함수 이름은 프로퍼티 네임이 대신해준다.
  	sayHello : function() {
    	console.log('Hello!');
    },
  	sayHi : function() {
    	console.log('Hi!');
    },
  	sayBye : function() {
    	console.log('Bye!');
    }
}
greetings.sayHello(); // Hello! 출력

파라미터가 필요할 시

let greetings = {
  	sayHello : function(name) {
    	console.log(`Hello ${name}!`);
    },
  	생략...
}
greetings.sayHello('Codeit'); // Hello Codeit! 출력

형태를 잘 살펴보면
console.log 도
console이라는 객체에 log라는 메소드이다.
메소드를 사용할 때에는 점 표기법을 사용하지만 대괄호 표기법을 사용해도 아무 문제없이 동작한다.

대괄호 표기법을 사용한다면 소괄호를 열고 닫는 위치를 주의해야한다.

greetings['sayHello']('Codeit');

그냥 함수로 만들어서 사용하면 되는데 굳이 메소드를 만들어서 사용하는 이유?
메소드를 제대로 이해하려면 좀 더 복잡하고 어려운 개념을 알아야한다.
간단하게 생각하면
메소드는 어떤 객체의 고유한 동작으로써 함수의 의미를 부여할 수 있기 때문이다.

let rectAngle = {
	width : 30,
  	height: 50,
  	getArea : function() {
    	return rectAngle.width * rectAngle.height;
    }
}

let triAngle = {
	width : 15,
  	height: 40,
  	getArea : function() {
    	return triAngle.width * triAngle.height / 2;
    }
}

같은 getArea 함수지만 어떤 객체의 메소드인지에 따라서
그 객체에 맞는 동작을 할 때, 메소드를 사용한다.

만약 일반적인 함수를 정의했다면 두 함수의 이름이 중복되지 않도록 신경써서 정의해야하기도 하고,
하나의 함수를 만든다고 하더라도, 상황에 따라 다르게끔 함수내부를 조금 복잡하게 고민했어야 한다.

메소드를 활용하면 다른 함수와의 이름중복을 피할 수도 있고,
조금 더 객체에 집중해서 함수의 동작부분을 작성할 수 있다.
사용할때에도 객체의 고유한 동작으로 구분할 수 있기 때문에 좀 더 의미있는 코드로 활용이 가능한 장점도 있다.

좋은 웹페이지 즐겨찾기