Читать «Изучаем программирование на JavaScript» онлайн - страница 318
Unknown
объекта или в одном из его прототипов.
groom()
Также от Object наследуется метод toString, который
обычно переопределяется в экземплярах. Этот метод
возвращает представление объекта в формате String.
Вскоре вы увидите, как переопределить этот метод для
получения более точного описания наших объектов.
ShowDog
name: “Scotty”
breed: “Scottish Terrier”
Object как прототип
weight: 15
Итак, сознавали вы это или нет, но у каждого объекта,
handler: “Cookie”
который мы когда-либо создавали, был прототип — и это
был Object. Вы можете задать в качестве прототипа объ-
екта другой вид объекта, как мы сделали с прототипом
выставочных собак, но в конечном счете все цепочки
прототипов ведут к Object.
Использование наследования...
с переопределением встроенного поведения
При наследовании от встроенных объектов вы можете переопреде-
лять методы, содержащиеся в этих объектах. Типичный пример —
метод toString прототипа Object. Все объекты наследуют от Object,
и поэтому могут использовать метод toString для получения
простого строкового представления любого объекта, например Консоль JavaScript
console.log, для вывода представления объекта на консоль:
[Object object]
function Robot(name, year, owner) {
this.name = name;
this.year = year;
this.owner = owner;
}
Метод toString, наследу-
var toy = new Robot("Toy", 2013, "Avary");
емый от Object, не очень
хорошо справляется
console.log(toy.toString());
со своими обязанностями.
Как видите, метод toString не лучшим образом преобразует
Консоль JavaScript
игрушечного робота в строку. Однако мы можем переопределить
метод toString и написать реализацию, которая создает строку
Toy Robot belonging to Avary
специально для объектов Robot:
function Robot(name, year, owner) {
// Тот же код
}
Robot.prototype.toString = function() {
Так гораздо лучше! Здесь
return this.name + " Robot belonging to " + this.owner;
используется наша
};
нестандартная
реализация toString.
var toy = new Robot("Toy", 2013, "Avary");
console.log(toy.toString());
Обратите внимание: метод toString может активизиро-
Игрушечный? Да этот
ваться, даже если вы не вызываете его напрямую. Напри-
робот работает на базе
мер, если вы используете оператор + для конкатенации
Arduino, и им даже можно
строки с объектом, JavaScript использует метод toString
управлять из JavaScript!
для преобразования объекта в строку, прежде чем объе-
динять его с другой строкой.
console.log("Robot is: " + toy);
Объект toy преобразуется в строку методом toString
перед конкатенацией. Если объект toy переопределяет
toString, то он использует этот метод.
624
ОПАСНАЯ ЗОНА
Начиная переопределять свойства и методы, легко увлечься. Особенно
важно действовать осторожно при переопределении свойств и методов
встроенных объектов — вы можете случайно изменить поведение дру-
гого кода, зависящего от этих свойств для выполнения определенных
операций.
Итак, если вы собираетесь переопределять свойства в Object, прочи-
тайте сначала правила техники безопасности. Иначе в вашем коде мо-