В своём фреймворке AtomJS я активно использую аксессоры — геттеры и сеттеры:
Foo = atom.Class({
get bar () {
return this._bar;
},
set bar (bar) {
this._bar = bar;
}
});
Я уже описывал теорию, но в топике я расскажу о том, как заставить их работать во всех современных браузерах, а именно — как разрулить ситацию с тем, что Internet Explorer 9 ничего не знает о
__defineSetter__
и подобных методах.