Note 배열과 함수가 객체인 이유
배열과 함수가 객체인 이유는 지금까지 나온 객체의 성질을 모두 다 사용할 수 있기 때문입니다. 배열과 함수에도 속성들을 추가하거나 수정 및 삭제할 수도 있습니다. 객체는 함수와 배열을 포함하는 개념이라서 중괄호({})를 사용해 만든 객체를 구분하기 위해 객체 리터럴이라고 따로 지칭하는 것입니다.
function hello() {}
hello.a = 'really?';
hello.a;
< 'really?'
const array = [];
array.b = 'wow!';
array;
< [b: 'wow!']
array.b;
< 'wow!'
다만, 함수와 배열은 주로 객체 리터럴과는 다른 목적으로 사용하기에 함수와 배열에 임의 속성을 추가하는 경우는 드뭅니다. 임의 속성을 넣으려면 처음부터 객체 리터럴을 사용하지 함수나 배열을 사용할 이유가 없습니다.