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"