자바스크립트는 객체 지향 프로그래밍 언어이며, 함수와 객체는 자바스크립트에서 매우 중요한 개념입니다. 이 블로그 포스트에서는 함수와 객체 간의 관계에 대해 살펴보겠습니다.
함수와 객체의 유사성
자바스크립트에서 함수는 사실 객체입니다. 사실상 함수는 Function 객체의 인스턴스이며, 이는 함수도 값으로 취급될 수 있다는 의미입니다.
function sayHello() {
console.log("Hello!");
}
sayHello(); // "Hello!"
// 함수는 객체처럼 속성을 가질 수 있습니다.
sayHello.message = "Hello Message";
console.log(sayHello.message); // "Hello Message"
위의 예제에서, 우리는 sayHello라는 함수를 정의하고 호출했습니다. 함수도 객체이므로, 속성을 가질 수 있습니다. sayHello 함수에 message라는 속성을 추가하고 값을 할당한 후, 이를 출력했습니다.
함수 객체의 사용
자바스크립트에서 함수는 다양한 방식으로 사용될 수 있습니다.
1. 함수를 변수에 할당하기
자바스크립트에서는 함수를 변수에 할당할 수 있습니다. 이는 함수를 값으로 다룰 수 있는 유연성을 제공합니다.
const greet = function() {
console.log("Hello!");
};
greet(); // "Hello!"
위의 예제에서는 greet라는 함수를 정의하고, 이를 변수에 할당했습니다. 그리고 나서 greet를 호출하면 “Hello!”가 출력됩니다.
2. 함수를 매개변수로 전달하기
자바스크립트는 함수를 다른 함수의 매개변수로 전달할 수 있습니다. 이는 고차 함수(higher-order function)를 구현하기 위해 매우 유용한 기능입니다.
function saySomething(message) {
console.log(message);
}
function doSomething(action) {
action("Hello!");
}
doSomething(saySomething); // "Hello!"
위의 예제에서, 우리는 saySomething이라는 함수를 정의하고 doSomething 함수에 전달했습니다. doSomething 함수는 전달받은 함수를 매개변수로 사용하여 호출합니다.
3. 함수를 객체의 속성으로 사용하기
자바스크립트에서 함수는 객체의 속성으로 사용될 수 있습니다. 이는 객체 지향 프로그래밍에서 메서드를 정의하는 방식입니다.
const person = {
name: "John",
sayHello: function() {
console.log("Hello, " + this.name + "!");
}
};
person.sayHello(); // "Hello, John!"
위의 예제에서, person 객체에 sayHello라는 함수를 속성으로 추가했습니다. 이 함수는 객체의 name 속성을 참조하여 인사 메시지를 출력합니다.
결론
자바스크립트에서 함수와 객체는 매우 밀접한 관계가 있습니다. 함수는 사실 객체이며, 자바스크립트에서는 함수를 값으로 다루고 다른 함수의 매개변수로 전달하거나 객체의 속성으로 사용할 수 있습니다. 이를 통해 유연하고 다양한 프로그래밍 패턴을 구현할 수 있습니다.