Я использовал такой код, который заставит объекты строчить с помощью уникальных строк:
Object.prototype.__defineGetter__('__id__', function () {
var gid = 0;
return function(){
var id = gid++;
this.__proto__ = {
__proto__: this.__proto__,
get __id__(){ return id }
};
return id;
}
}.call() );
Object.prototype.toString = function () {
return '[Object ' + this.__id__ + ']';
};
биты __proto__
предназначены для того, чтобы геттер __id__
не отображался в объекте , это было проверено только в firefox.