Расширение объектов. Свойство Prototype

Расширение объектов. Свойство Prototype

Здравствуйте! Мы с вами уже разобрали как создаются объекты, как перебрать свойства в объекте и даже  функции в объектах. В этом уроке давайте разберем как можно расширить функционал объекта, используя свойство prototype.

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

Свойство prototype объекта

Допустим после определения объекта надо добавить к нему новый метод:

function createUser(name, age) {
    this.name = name;
    this.age = age;
    this.display = function(){
        document.write("Имя: " + this.name + "; возраст: " + this.age + "<br/>");
    };
};

createUser.prototype.hello = function(){
    document.write(this.name + " сказал: 'Привет!'<br/>");
};
createUser.prototype.maxAge = 120;
var tommy = new createUser("Tommy", 24);
tommy.hello();
var johnny = new User("Джонни", 26);
johnтн.hello();
console.log(tommy.maxAge); // 120
console.log(johnny.maxAge); // 120

Как видите в примере были добавлены метод hello и свойство maxAge, и соответственно каждый объект createUser будет иметь возможность их использовать. Но следует отметить, что значение maxAge будет одинаковым для всех объектов, это так называемое разделяемое статическое свойство.

А вот свойство this.name, будет для каждого вновь создаваемого объекта разным.

Однако в объекте  можно определить свойство, которое будет назваться одинаково со свойством прототипа. В таком случае свойство объекта имеет приоритет над свойством прототипа.

createUser.prototype.maxVozrast = 110;
var tommy = new createUser("Том", 24);
var johnny = new createUser("Джон", 22);
tommy.maxAge = 99;
console.log(tommy.maxAge); // 99
console.log(johnny.maxAge); // 110

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Плюсануть
Поделиться

Об авторе

admin administrator

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: