Читать «Изучаем программирование на JavaScript» онлайн - страница 322

Unknown

и исправлениями к этой книге.

дальше 4 629

ключевые моменты

КЛЮЧЕВЫЕ

МОМЕНТЫ

ƒ Система объектов JavaScript использует наследо-

ƒ Если вы добавите свойства в прототип после созда-

вание через прототипы.

ния экземпляров, наследующих от него, то все эк-

ƒ Экземпляр, создаваемый конструктором, содержит

земпляры немедленно унаследуют новые свойства.

собственные свойства и копию методов из конструк- ƒ Чтобы узнать, определено ли свойство в экземпляре,

тора.

используйте метод hasOwnProperty.

ƒ Свойства, добавляемые в прототип конструктора, ƒ Метод call может использоваться для вызова функ-

наследуются всеми экземплярами, созданными

этим конструктором.

ции с указанием объекта, который должен использо-

ваться в качестве this в теле функции.

ƒ Размещение свойств в прототипе может сократить

дублирование кода объектов на стадии выполнения. ƒ Object — объект, от которого в конечном итоге

наследуют все прототипы и экземпляры.

ƒ Чтобы переопределить свойства из прототипа,

просто добавьте их в экземпляр.

ƒ Object содержит свойства и методы, которые на-

следуются всеми объектами (как, например, toString

ƒ Конструктор включает прототип по умолчанию,

и hasOwnProperty).

к которому можно обратиться через свойство

prototype конструктора.

ƒ Вы можете переопределять или добавлять свойства

во встроенные объекты (такие, как Object или String),

ƒ Вы можете назначить собственный объект свойству

prototype конструктора.

но будьте осторожны — такие изменения могут при-

водить к непредвиденным последствиям.

ƒ Если вы используете собственный объект как прото-

тип, не забудьте назначить правильный конструктор ƒ В JavaScript объектом является практически все —

свойству constructor для предотвращения недора-

функции, массивы, многие встроенные объекты и все

зумений.

объекты, которые вы создаете самостоятельно.

Потрясающе!

Поздравляем

Да, у вас

с окончанием

получилось! Книга

Блестяще! Вы успешно

книги!

подходит к концу!

Так держать, салаги!

Отлично! Без вас мы бы

справились!

Отменно!

Вы готовы

не справились!

к практическому

программированию!

630 глава 13

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

Развлечения с магнитами. Решение

На холодильнике была выложена диаграмма объектов, но кто-то все перепутал. Сможете ли

вы расставить магниты по своим местам? На диаграмме будут присутствовать два экземпляра,

созданных на базе прототипа. Первый — Робби (Robby) — создан в 1956 году, принадлежит

доктору Морбиусу (Dr. Morbius), оснащен выключателем и умеет бегать в Starbucks за кофе.

Другой робот — Рози (Rosie) — создан в 1962 году, прибирается в доме Джорджа Джетсона

(George Jetson). Удачи! Кстати, внизу могут остаться лишние магниты...

Наше решение выглядит так:

Прототип Robot

Прототип,

maker: "ObjectsRUs"

function speak() {

// code to speak

от которого

speak()

}

могут насле-

makeCoffee()

довать ваши

blinkLights()

function

роботы.

makeCoffee() {

// code 4 coffee

}

function

blinkLights() {

// code 4 lights

}

Robot

Robot

name: "Robby"

name: "Rosie"

year: 1956

year: 1962

owner: Dr. Morbius

owner: George Jetson

onOffSwitch: true

cleanHouse()