Какая разница между Array и Array.prototype?

Зачем нужно свойство Array.prototype? Объясните пожалуйста различия Array и Array.prototype, это же не одно и тоже?

Ну Array это функция конструктор, её используют для создания массивов, а Array.prototype это объект прототип, с набором методов, его используют для реализации прототипного наследования, и имеется это свойство только у функций, по дефолту там есть поле конструктор, оно хранит ссылку на класс который создал данный объект.

Когда объект проверяется на наличие определенного свойства, то ищется оно в начале в самом объекте, если же его там не находят то поиск продолжается в прототипе. По сути в самом объекте находятся только его личные свойства, а в прототипе хранятся свойства всех объектов этого класса, то есть по сути если добавить свойство в прототип то оно появится у всех объектов данного класса.