Array - функция
Array.prototype - объект
function f() {}
var o = new f();
console.log(o.x); //undefined
f.prototype.x = 123;
console.log(o.x); //123
var e = new f();
console.log(e.x); //123
e.x = 234;
console.log(e.x); //234
console.log(o.x); //123
f.prototype.x = 555;
console.log(e.x); //234
console.log(o.x); //555
console.log(o === e); //false
console.log(o.__proto__ === e.__proto__); //true
console.log(o.__proto__ === f.prototype); //true
console.log(o instanceof f); //true
Когда вы проверяете свойство объекта, то сначала оно ищется в самом объекте, и если его нет, то в прототипе. В самом объекте хранятся только его собственные свойства. А в прототипе хранятся свойства всех объектов данного класса. Если вы добавите свойство в прототип, то оно появится у всех объектов данного класса (если у них нет собственного свойства с таким же именем, которое будет перекрывать). Конечно, сам прототип тоже можно поменять, но это уже отдельная история. Можно много чего сделать, используя прототипы.
//Бонус
Array.prototype.couple = function(){return this[0] + this[1]};
[3,4,5].couple(); //7