Свойство prototype

Prototype - это свойство функции в котором хранятся общие методы и свойства для всех экземпляров одного класса.

Когда создаётся функция, в неё по умолчанию добавляется свойство prototype. Значением свойства prototype является объект, содержащий общие свойства и методы, которые доступны всем объектам, созданным с помощью этого конструктора.

Вместо того, чтобы указывать свойства и методы в конструкторе, их можно указать непосредственно прототипу:

function Animal (name) {
    this.name = name; // для каждого экземпляра свое имя
}
Animal.prototype.walk = function () { // общая для всех экземпляров
    alert("I can walk");
}

var dog = new Animal("dog");
var cat = new Animal("cat");

alert(dog.name); // dog
alert(cat.name); // cat

// и dog, и cat имеют метод walk
dog.walk(); cat.walk(); // I can walk

Через prototype - можно расширят прототипы встроенных объектов

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ‘’);
};
" foo bar   ".trim(); // "foo bar"