Показать сообщение отдельно
  #8 (permalink)  
Старый 24.10.2012, 23:38
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от Дзен-трансгуманист Посмотреть сообщение
Ну это вряд ли...
alert(window instanceof Node); // false

Так-то корнем является document, так что разве что через него, и потом, опционально, через with. Но это не наилучшая идея, имхо.
Да нет, в IE 8 в window тоже можно добавлять аксесорные свойства.
Оказывается, дело было в enumerable: true, если это убрать, то в IE 8 работает (в этом нет ошибки согласно спецификации, просто Object.defineProperty в IE 8 реализован нестандартным способом).
Этот пример работает также в IE 8.
var a={}, b;
a[b]=0;
Object.defineProperty(window, "c", {
  get: function () {
    return a[b];
  },
  set: function (v) {
    a[b]=v;
  }
});
c++;
alert(a[b]);

Последний раз редактировалось oneguy, 24.10.2012 в 23:49.
Ответить с цитированием