Основы программирования на JavaScript


New Object и объектные литералы - часть 2


function Cat(name){ this.name = name;

this.species = 'Cat'; this.talk = function(){ alert('Meow!'); } this.callOver = function(){ alert(this.name+' ignores you'); }, this.pet = function(){ alert('Purr!'); } }

var felix = new Cat('Felix'); var sam = new Cat('Sam'); var patty = new Cat('Patty');

felix.pet(); // выводит 'Purr!' sam.callOver(); // выводит 'Sam ignores you'. Просто, как кот! alert(patty.species); // выводит 'cat'

В этом примере создана одна функция Cat, а затем создаются три новых кота с помощью этой функции: Felix, Sam и Patty. Каждый из этих котов имеет одинаковые функции: talk, callOver и pet, и каждая из них имеет свойство species, заданное как 'cat'. И подобно всем котам, они в равной степени своенравны.

Обычно говорят, что felix, sam и patty являются экземплярами одного объекта: Cat. Код самой функции Cat называется конструктором. Мы передаем ей переменную "name" и используем ее для задания this.name. К сожалению, при объявлении каждой функции Cat в конструкторе в действительности создается новая копия каждой функции всякий раз при создании нового Cat. Так как функции talk, callOver и pet являются идентичными, то нам в действительности требуется только одна копия каждой функции. Здесь на помощь приходит прототипирование.




Начало  Назад  Вперед