Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.10.2012, 23:57
kaf kaf вне форума
Интересующийся
Отправить личное сообщение для kaf Посмотреть профиль Найти все сообщения от kaf
 
Регистрация: 25.06.2012
Сообщений: 24

oneguy Спасибо. Хотя сейчас и нужна поддержка IE8, со временем эта необходимость может отпасть, т.ч. буду иметь в виду...
Ответить с цитированием
  #12 (permalink)  
Старый 25.10.2012, 00:09
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от kaf Посмотреть сообщение
oneguy Спасибо. Хотя сейчас и нужна поддержка IE8, со временем эта необходимость может отпасть, т.ч. буду иметь в виду...
Однако в IE 8 можно сделать что-то подобное, используя глобальные переменные с именами типа d0, d1, ..., как в следующем примере.
var a={},b,a1={},b1;
a[b]=0;a1[b1]=1;
Object.defineProperty(window, "d0", {
  get: function () {
    return a[b];
  },
  set: function (v) {
    a[b]=v;
  }
});
Object.defineProperty(window, "d1", {
  get: function () {
    return a1[b1];
  },
  set: function (v) {
    a1[b1]=v;
  }
});
for(var i=0;i<2;i++){
    window["d"+i]++;
    // или еще что-то
}
alert(a[b]+', '+a1[b1]);
Ответить с цитированием
  #13 (permalink)  
Старый 25.10.2012, 12:02
kaf kaf вне форума
Интересующийся
Отправить личное сообщение для kaf Посмотреть профиль Найти все сообщения от kaf
 
Регистрация: 25.06.2012
Сообщений: 24

oneguy Много глобальных переменных, мне кажется, не есть хорошо. Чуть подправил, получилась основа нужного мне механизма.
function F(){
    this.counter=0;
    var self=this;
    this.bind=bind;
    function bind(a,b){
        var link='link_'+self.counter;
        Object.defineProperty(window, link, {
             get: function () {
                 return a[b];
             },
             set: function (v) {
                 a[b]=v;
             }
        });
        self.counter++;
        return link;
    }
}

var f=new F();
var d=[];

var a={},b;
a[b]=0;
d.push(f.bind(a,b));

var a1={},b1;
a1[b1]=1;
d.push(f.bind(a1,b1));

for(var i=0;i<d.length;i++){
    window[d[i]]++;
    // или еще что-то
}
alert(a[b]+', '+a1[b1]);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IE 8 Не удалось получить значение свойства "match": значением объекта является null abstract Internet Explorer 2 26.08.2011 15:27
Скрипт вычисления координат объекта banderasantonio197555 Events/DOM/Window 4 16.08.2011 17:37
прямая от первого объекта до второго ntro123 Events/DOM/Window 5 09.05.2011 08:41
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00
Не работает перебор свойств объекта BANick Общие вопросы Javascript 1 16.09.2008 22:46