Gidhub BE Developer

1급 객체(First Class Object)란?

2018-11-12
goodGid

1급 객체란?

  1. 변수나 데이터에 할당 할 수 있어야 한다.

  2. 파라미터로 넘길 수 있어야 한다.

  3. 반환 값(return value)으로 사용할 수 있다.

  4. 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.

  5. 동적으로 프로퍼티 할당이 가능하다.

  • JS에서의 함수는 1급 객체이다.

조건 예시

변수나 데이터에 할당 할 수 있어야 한다.

var foo = function(){
  console.log("익명함수를 foo 변수에 담을 수 있다.");
}
foo();

파라미터로 넘길 수 있어야 한다.

var foo = function(){
  let x = 10;
  return x;
}
 
var goo = function(value){
  console.log(value)
}
 
// 인자로 함수를 전달할 수 있다.
goo(foo());

반환 값(return value)으로 사용할 수 있다.

var foo = function(){
  return function(){
    var x = 10;
    return x;
  }
}
 
console.log(foo())   // 익명함수를 반환한다.
console.log(foo()()) // 익명함수가 반환하는 값을 반환한다.

할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.

var foo = function goo(){
  console.log("goo라는 함수로 선언했지만 foo라는 변수로 고유 구별이 가능하다.")
}
foo();
  • goo라는 함수로 선언을 했지만 foo라는 변수에 할당하여
    foo()를 호출함으로써 goo()함수를 구별할 수 있다.


동적으로 프로퍼티 할당이 가능하다.

function foo(){
  console.log("foo()함수는 비어 있습니다.")
}
 
foo.property1 = "첫 번째 프로퍼티 추가";
foo.property2 = "두 번째 프로퍼티 추가";
 
console.log(foo.property1);
console.log(foo.property2);

Reference


Recommend

Index