Comments 26
По сути, мы можем задавать именованные функции-обработчики. Вот и всё. Не знаю, зачем это кому-то понадобится.Я думаю это на будущее для strict mode из ECMAscript 5, там хотят избавиться от arguments.callee.
Internet Explorer, как всегда, сказал «мне с вами не по пути» и сделал getter'ы и setter'ы своим собственным способом.defineProperty тоже, кстати, из ECMAscript 5, так что тут все хорошо, Microsoft стоит упрекать только в том, что этот функционал доступен для встроенных объектов.
+1
Прекрасный пост. Беру на заметку.
+1
В примере для Шаг 2 Вы сделали ошибку:
Вы описываете функцию-конструктор, но вместо this._secretProperty = newVal; написали var _secretProperty = newVal;
Вы описываете функцию-конструктор, но вместо this._secretProperty = newVal; написали var _secretProperty = newVal;
-3
Это как раз таки и есть суть шага 2, переменная _secretProperty объявлена через var и является локальной, доступна только внутри функции (в данном случае функции-конструктора), getter'ы/setter'ы получают к ней доступ через механизм замыканий, иначе кроме как через них получить к ней доступ извне не получится, вот соот-но и выходит приватное свойство.
+1
Вам следует почитать про замыкания в JS.
0
document.body.onpropertychange = function() {
var pn = event.propertyName;
var pv = event.srcElement[event.propertyName];
if (pn == "description")
alert(pv);
}
* This source code was highlighted with Source Code Highlighter.
Для IE 5.0+ event не определен, event = window.event
+1
> Это — самый простой и очевидный случай. Но и самый плохой. Храня данные в this, мы никак не скроем их от «злого хакера».
Ох уж эти злые хакеры. Они хотят изменить мои объекты, сволочи!!!
На самом деле мотивацией введения getter/setter является абстракция данных, а не «злые хакеры» (data abstraction != data hiding).
Ох уж эти злые хакеры. Они хотят изменить мои объекты, сволочи!!!
На самом деле мотивацией введения getter/setter является абстракция данных, а не «злые хакеры» (data abstraction != data hiding).
+14
UFO just landed and posted this here
Спасибо, исчерпывающая информация о геттерах/сеттерах.
А в IE8 всё-таки красивый синтаксис…
А в IE8 всё-таки красивый синтаксис…
0
UFO just landed and posted this here
Насчет других браузеров незнаю, а та же опера например позволяет выполнять яваскрипт на текущей странице через адресную строку, ну и возможно с помощью userjs можно вклиниться в работающий скрипт, насчет этого не уверен.
0
жаль, что для IE нужно так извращаться:( — я бы не хотел чтобы все мои объекты на поверку были дом нодами:(
0
на самом деле с ИЕ не так все плохо mitasovr.habrahabr.ru/blog/75158/
0
Сам случайно наткнулся, пока не знаю зачем, но наверняка такую технику еще для чего нибудь можно использовать :)
0
Sign up to leave a comment.
Getters & Setters в Javascript