JavaScript: Использование прототипов


JavaScript: Использование прототипов
Прототипы в Javascript`е появились с версии 1.1. С помощью прототипов можно добавлять новые свойства и параметры к уже существующим объектам.
Прототипы в Javascript`е появились с версии 1.1. С помощью прототипов можно добавлять новые свойства и параметры к уже существующим объектам. В прототипах можно провести некоторую аналогию с наследованием в ООП: создается иерархия, или слои.
Объект <= Класс <= Экземпляр класса
Иллюстрация показывает, что экземпляр класса наследует все свойства и методы класса, который, в свою очередь, наследует свойства и методы объекта, на основе которого был создан класс.

Создание объекта здесь ничем не отличается от аналогичного процесса при создании объекта с помощью конструкторов.
function MyObject(id, name)
{
    //Устанавливаем значения
    this._id = id;
    this._name = name;
}
Если вдруг мы захотим создать новое свойство для объекта MyObject, то сделать это можно будет следующим образом:
var MyInstance = new MyObject(5,"some value");
MyInstance.newproperty = true;
Как видите, создать новое свойство для объект не сложно, но оно будет доступно только на данном экземпляре и не будет распространятся на другие. Чтобы решить эту проблему, стоит использовать прототипы.
var MyInstance = new MyObject(5,"some value");
MyInstance.prototype.newproperty = false;
MyInstance.newproperty = true;
Это не является лучшим решением использования прототипов - это просто пример. Почему это не является лучшим решением? Потому что код будет трудно сопровождать, если свойства объектов не как положено (в самом объекте), а в произвольном месте скрипта.

Свойствам, созданным через прототипы, можно задавать значения по умолчанию. Впоследствии их можно будет перезаписать (это было показано в предыдущем примере).
Как и следовало ожидать, помимо свойств можно создавать и методы. Вот простой пример того, как это сделать.
//Используем наш объект, а не экземпляр.
MyObject.prototype.getId = function()
{
    return this._id;
}
Механизм прототипов мощен не только по вышеперечисленным возможностям, но и потому, что можно улучшать собственные объекты Javascript, такие как String, Array, и другие. Приведу простой пример:
//Функция получения количества слов в строке
function getWordsCount()
{
    return this.split(" ").length;
}

//Назначаем функцию прототипу
String.prototype.getWordsCount = getWordsCount;

//Пример использования:
var mystring = "My Test String";
alert(mystring.getWordsCount()); //Должно вывести число 3


Оценить Статью:  
1   2   3   4   5   6   7   8   9   10    

« Назад
SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Стишки пирожки про Олега⁠⁠

Размещена 20 июня 2024 года

Олег купил презервативы
Проник в семидесятый год
И подарил их папе с мамой
Такой нелепый суицид

читать далее…

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…