Кстати, вариант
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()]);