Array는 size가 정해져있어 size를 초과하는 data를 저장할 수 없습니다. 하지만 Dynamic Array는 size를 초과하는 data를 저장할 시 resize를 통해 유동적으로 size를 조절하여 데이터를 저장할 수 있는 자료구조입니다.
Linked List는 데이터 값과 다음 Node의 주소를 가지고있는 Node라는 구조체가 논리적인 연속성을 가지고 연결되어 있는 자료구조입니다.
Array는 메모리의 연속성을 유지하지만 Linked List는 그렇지 않습니다. 다만 다음 Node의 메모리 주소를 연결함으로써 논리적인 연속성을 가지고 있습니다.
조회의 경우 Array는 O(1), Linked List는 O(n)의 시간 복잡도가 걸리고, 삽입 및 삭제의 경우 Array는 O(n), Linked List의 경우 O(1)의 시간 복잡도가 걸립니다.
따라서 조회가 잦고 데이터의 크기가 정해져있다면 Array를 데이터의 크기를 예측하기 힘들고 삽입 및 삭제를 자주하는 상황에는 Linked List를 사용하는 것이 유리합니다.
프로토타입은 자바스크립트에서 객체 지향을 가능하게 해주는 유용한 개념입니다. 생성자 함수를 통해 인스턴스를 생성하게 되면 해당 생성자 함수는 모두 프로토타입을 가지게 되는데, 이는 생성자 함수로 생성한 인스턴스도 해당 프로토타입에 정의된 내용을 가지고 있습니다. 또한 프로토타입 체인을 통해 상속이 가능하기 때문에 상위 객체의 프로토타입을 하위 객체가 상속 받아 사용할 수 있습니다. 자바스크립트의 경우 모두 Object의 프로토타입을 상속받기 때문에 Object에 정의된 프로토타입 메서드를 사용할 수 있게 되는 것입니다. 따라서 인스턴스에서 모든 메서드를 가지고 있기 보다는 프로토타입 자체에 메서드를 정의해서 인스턴스 생성시 불필요하게 모든 메서드를 생성하는 것보다 필요할 때 프로토타입에 정의되어 있는 메서드를 호출해서 사용하게 되면 메모리 낭비를 줄일 수 있습니다.