Javascript는 클래스 기반이 아닌 prototype에 기초한 객체 기반 언어입니다. 이런 차이점으로 인해, 객체들의 계층 구조의 생성과 속성 및 속성 값의 상속을 어떻게 구현해야 하는지에 대한 부분이 덜 분명할 수 있습니다.
ex) console창에 입력을 해보면
let arr = [];
// undefined
typeof arr;
// "object"
위와 같이 arr을 변수로 선언 후 빈 배열을 할당했지만, typeof method를 사용해보면 결과가 "object" 즉 객체로 나오는 것을 볼 수 있다. Javascript가 결국 객체 기반 언어이기 때문에 배열도 결국 객체인 것처럼 되는 것이다. 때문에 arr이 배열인지 객체인지 확인하기 위해서 Array.isArray() method를 사용하여 자세히 확인하는 것이다.
배열에서는 length 속성을 이용해서 배열의 길이(개수)를 반환할 수 있다. 하지만 객체에서는
let obj = {name: 'Kim', age:20}
// undefined
obj.length
// undefined
이처럼 단순히 length를 이용해서는 객체의 속성의 개수가 반환되지 않는다.
따라서 객체에서는 Obeject.keys() method를 사용해서 객체의 각 key값을 배열로 반환 받고,
이 배열에 다시 length를 이용해서 개수를 구할 수 있다.
Object.keys(obj)
/// ["name", "age"]
Object.keys(obj).length
// 2
아 객체는 여기있네요 감사합ㄴ니다