본문 바로가기

JavaScript/Basic-Javascript

자바스크립트 정리하며 배우기[17] - 일급객체 함수 활용 방법

안녕하세요. Tay 입니다.

일급객체란, 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체입니다.

자바스크립트의 일급객체 함수로 어떤 활용 방법이 가능한지 알아보도록 하겠습니다.

 

입급객체 함수

  • 입력 값 처리
  • 일반 객체처럼 취급
  • 다른 함수의 인자로 취급
  • 함수의 리턴값으로 사용 가능
  • 함수 프로퍼티 생성

 

변수나 프로퍼티의 값으로 할당

1) index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <!-- <script src="function.js"></script> -->
    <!-- <script src="hoisting.js"></script> -->
    <!-- <script src="arrow.js"></script> -->
    <script src="use-function.js"></script>
  </body>
</html>

 

2) use-function.js

use-function

// Assign function in variable
let sayHello = name => {
  console.log(`Hello ${name}`);
};

// Assign function in property
let Tay = {
  name: "Tay",
  male: true,
  greeting: sayHello
};

Tay.greeting(Tay.name);
  • Assign function in variable - sayHello 에 화살표함수 할당
  • Assign function in property - Tay 객체 greeting 프로퍼티에 sayHello 함수 할당

 

Github Commit

 

함수 인자로 전달

함수를 다른 함수의 인자로 넘기기

 

  • use-function.js

function 인자로 넘기기

// Create function sayHeight
let sayHeight = height => {
  height(); // Do say
};

// Generate function sayHeight
sayHeight(function() {
  console.log(`My height is 3000cm`);
});
  1. Create sayHeight : sayHeight 의 인자로 height 함수를 받는다.
  2. Generate : sayHeight 에 인자로 새로운 함수를 생성하여 전달하였다.
  3. Do say : sayHeight 에서 받은 함수를 실행한다.

 

Github Commit

 

리턴 값으로 활용

함수 자체가 값이라서 리턴이 가능하다.

 

  • use-function.js

return function

// Create-Return function weight
let weight = () => () => {
  console.log("My weight is 600kg");
};

let sayWeight = weight();
sayWeight();
  1. 익명 함수 1 을  선언한다. (제 2익명함수를 리턴한다)
  2. 익명 함수 2 log 를 수행한다.
  3. sayWeight 객체에 weight 함수 참조값을 할당한다.
  4. sayWeight 를 실행하면, weight 함수의 익명 함수 1이 수행되고, 리턴 값으로 익명 함수 2가 수행된다.

 

지금까지 결과 :

Github Commit

 

함수 프로퍼티 생성

동적으로 프로퍼티를 생성 및 할당

 

  • use-function.js

let sayWeight = weight();
sayWeight();

console.dir(sayWeight);

sayWeight dir

함수도 객체라서 프로퍼티가 존재하며, 프로퍼티를 동적으로 생성 할 수 있다.

※ length 프로퍼티는 인자값의 개수이다.

 

 

결과 :

let sayWeight = weight();
sayWeight();

console.dir(sayWeight);

sayWeight.weight = "600kg";

console.dir(sayWeight);

 

위 처럼 동적으로 weight 프로퍼티를 추가했고, 600kg 을 할당했다.

 

Github Commit

 

 

이 글은 개인 공부목적으로 작성되었습니다.

정보가 잘못 되거나 궁금한 사항은 댓글로 부탁드립니다!! 읽어주셔서 감사합니다.