Объект Object в JavaScript
Объект Object в JavaScript используется крайне редко, я бы даже сказал крайне-крайне редко. Однако, этот объект имеет первостепенную важность. Почему? Очень просто: этот объект является головным для всех объектов в JavaScript. Или, другими словами, все объекты наследуются от объекта Object. Следовательно, все свойства и методы этого объекта работают и для всех других объектов в JavaScript. Поэтому рассмотрев свойства и методы объекта Object, мы моментально разберёмся с кучей свойств и методов всех других классов.
Начнём мы со свойства prototype. Это свойство позволяет добавлять новые свойства в объекты, как бы это странно не звучало. Предлагаю сразу перейти к примеру:
var string = new String ("My String");
String.prototype.newProp = 5;
document.write(string.newProp);
В данном примере мы создали экземпляр объекта String, затем добавили новое свойство, используя свойство prototype класса Object, со значением 5. А затем у созданного нами объекта мы выводим значение этого свойства.
Свойство prototype также позволяет добавлять новые методы. Вот пример:
String.prototype.newFunc = func;
function func () {
alert("Новый метод");
}
string.newFunc();
В результате сработает метод, применённый к объекту String.
Переходим теперь к методам объекта Object (а, соответственно, и к методам всех других объектов), и начнём с методов watch() и unwatch(). Первый метод позволяет начать слежку за изменением какого-либо свойства, а второй, наоборот, снимает слежку. Сразу пример:
var strng = new String();
String.prototype.newProp = 5;
string.watch("newProp", func);
string.newProp = 0;
string.unwatch("newProp");
string.newProp = 5;
function func() {
alert("Значение свойства было изменено!");
}
Вначале мы создаём объект String, чтобы проверить работу методов. Затем добавляем в класс String новое свойство (которое, разумеется, будет и у экземпляра объекта String - переменной string). Затем начинаем слежку за этим новым свойством. И при его изменении требуем вызов функции func(). Затем изменяем значение свойства, чтобы вызвалась функция func(). После этого снимаем слежку, снова изменяем свойство newProp. Результат: после первого изменения вызвалась функция func(), а после второго изменения ничего не произошло (потому что перед этим мы сняли слежение). Как видите, всё очень и очень просто.
Переходим к последнему методу, но, пожалуй, самому важному, и который использует чаще других вместе взятых. Этот метод называется toString(), и занимается он преобразованием объекта в строку. Когда мы писали что-то наподобие этого:
var date = new Date();
document.write(date);
У нас срабатывал метод toString(), который описан для объекта Date. Ведь очевидно, что каждый объект будет выглядеть по-разному: массив одним образом, дата и время другим, а строка третьим. Поэтому реализация метода toString() от объекта к объекту всегда меняется.
Давайте сейчас сделаем простейший пример с использованием метода toString(), чтобы Вы поняли, как он вообще работает. А в следующих статьях я Вам покажу, как его надо использовать при создании собственных объектов.
var date = new Date();
Date.prototype.toString = func;
document.write(date);
function func() {
return "<b>abc</b>";
}
Здесь мы переопределяем реализацию метода toString(), а затем выводим объект. Разумеется, вызывается уже наша функция, которая, как и полагается, возвращает строку (строковое представление объекта, другими словами). В результате, в окне браузера Вы увидите: abc.
Вот и все самые основные свойства и методы объекта Object, который является элементарным типом данных в JavaScript и от которого появились все остальные объекты этого языка.
-
- Михаил Русаков
Комментарии (4):
Хром ругается на метод match. Uncaught TypeError: Object [object Date] has no method 'watch' Да и в других браузерах тоже этот скрипт не работает.
Ответить
Кажется,отвечал Вам на форуме. Это не кроссбраузерно,но плагин работает http://stackoverflow.com/questions/1029241/javascript-object-watch-for-all-browsers + то,что уже писал на форуме о том,с какими браузерами дружит и зачем нужен
Ответить
странно, но у меня на Netscape и почему-то не понимает третий скрипт с верху, а именно: string.watch("newProp", func); - выдаёт ошибку: "Uncaught TypeError: string.watch is not a function". И в JavaScript книги вообще нету метода watch(), дальше не проверял!
Ответить
...Итак, прошло 8 лет. Методы watch() и unwatch() устарели и не знакомы современным браузерам. Подробнее https://code-examples.net/ru/docs/javascript/global_objects/object/watch
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.