Читать «Изучаем программирование на JavaScript» онлайн - страница 322
Unknown
и исправлениями к этой книге.
КЛЮЧЕВЫЕ
МОМЕНТЫ
Система объектов JavaScript использует наследо-
Если вы добавите свойства в прототип после созда-
вание через прототипы.
ния экземпляров, наследующих от него, то все эк-
Экземпляр, создаваемый конструктором, содержит
земпляры немедленно унаследуют новые свойства.
собственные свойства и копию методов из конструк- Чтобы узнать, определено ли свойство в экземпляре,
тора.
используйте метод hasOwnProperty.
Свойства, добавляемые в прототип конструктора, Метод call может использоваться для вызова функ-
наследуются всеми экземплярами, созданными
этим конструктором.
ции с указанием объекта, который должен использо-
ваться в качестве this в теле функции.
Размещение свойств в прототипе может сократить
дублирование кода объектов на стадии выполнения. Object — объект, от которого в конечном итоге
наследуют все прототипы и экземпляры.
Чтобы переопределить свойства из прототипа,
просто добавьте их в экземпляр.
Object содержит свойства и методы, которые на-
следуются всеми объектами (как, например, toString
Конструктор включает прототип по умолчанию,
и hasOwnProperty).
к которому можно обратиться через свойство
prototype конструктора.
Вы можете переопределять или добавлять свойства
во встроенные объекты (такие, как Object или String),
Вы можете назначить собственный объект свойству
prototype конструктора.
но будьте осторожны — такие изменения могут при-
водить к непредвиденным последствиям.
Если вы используете собственный объект как прото-
тип, не забудьте назначить правильный конструктор В JavaScript объектом является практически все —
свойству constructor для предотвращения недора-
функции, массивы, многие встроенные объекты и все
зумений.
объекты, которые вы создаете самостоятельно.
Потрясающе!
Поздравляем
Да, у вас
с окончанием
получилось! Книга
Блестяще! Вы успешно
книги!
подходит к концу!
Так держать, салаги!
Отлично! Без вас мы бы
справились!
Отменно!
Вы готовы
не справились!
к практическому
программированию!
630
Развлечения с магнитами. Решение
На холодильнике была выложена диаграмма объектов, но кто-то все перепутал. Сможете ли
вы расставить магниты по своим местам? На диаграмме будут присутствовать два экземпляра,
созданных на базе прототипа. Первый — Робби (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()