一級オブジェクト(first-class)


第1レベルのオブジェクト
通常、他のオブジェクトに適用されるすべての演算をサポートするオブジェクト.
オブジェクトを値として扱う

1.一級オブジェクトの条件


1.関数は匿名オブジェクトとして生成できます。

const increase = function (num) {
  return ++num;
};

const decrease = function (num) {
  return --num;
};

2.関数は、オブジェクト、変数に格納できます。

const test = { increase, decrease };

3.関数はパラメータに渡すことができます。

const increaser = makeCounter(test.increase);
console.log(increaser()); // 1
console.log(increaser()); // 2

4.他の関数の結果として返すことができます。

function makeCounter(test) {
  let num = 0;

  return function () {
    num = test(num);
    return num;
  };
}
関数は、1レベルのオブジェクトの条件に相当します.

2.一級の対象にできること

  • 高次関数(forEach、filter、map、sortなど)
  • closer
  • コールバックモード