Показать сообщение отдельно
  #25 (permalink)  
Старый 02.10.2010, 11:34
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Кстати, вариант storage[this] = newValue; вполне возможен. Правда, придется залезть не только в Object.prototype, но и в метод toString. Учтите, Kolyaj не даст соврать, при этом бог убьет не только котенка, но и щеночка. Поэтому вариант с циклом мне более симпатичен
Object.prototype.key = (function(){
  var storage = {}, count = 0;
  return function(value){
    if(this.toString()=='[object Object]') this.toString=(function(){
      var string = 'obj'+count;
      count++;
      return function(){return string;};
    }());
    if(arguments.length!=0){
      storage[this] = value;
      return value;
    };
    return storage[this];
  };
}());

var FirstObject = {a:1}, SecondObject = {b:2};
FirstObject.key(100);
SecondObject.key(999);

alert([FirstObject.key(), SecondObject.key()]);
Ответить с цитированием