var object = {
    a: 1,
    b: 2, 
    c: {
        d: 3
    }
};
Object.defineProperty(Object.prototype, 'dump', {
    value : function() {
        var output = [];
		
		for (var i in this) {
			if (this.hasOwnProperty(i)) 
			{
				var key = i + "=";
				var value = this[i];
				
				output.push(key += {
				   "[object Object]" : value.dump(),
				   "[string Object]" : "\"" + value + "\""
				}[Object.prototype.toString.call(value)] || value);
			}
		}
		return "{" + output.join() + "}";
	},
    configurable: 1,
	writable : 0,
    enumerable: 0
});
alert(object.dump());
 | 
	
		
 за код - спасибо. про defineProperty по крайней мере - не знал. 
	но не знаю, мож я плохо объясняю. у меня нет проблем с функцией, которая делает это: Цитата: 
	
 проблема, повторю еще раз, в том, что, похоже, что нет возможности использовать одновременно ключ хеша и одноименную функцию: 
console.log({a:1, b:2, dump: 3}.dump());
Цитата: 
	
  | 
	
		
 Это нихрена не баг, а вполне себе фича.) 
	 | 
	
		
 x15nicky, 
	Да вы язык кажется не понимаете, функция - это тоже переменная, поэтому нельзя создать одноимённы метод и свойство.  | 
	
		
 я это понимаю, и об этом писал выше. но всеж в PHP нет ограничений на имена ключей. в Руби - тоже. и если эта фича будет ликвидированна в будущих версиях, я думаю, никто о ней не пожалеет. 
	кто-то из вас, господа гуру мне минусанул карму на 8 сотен. я на вашем месте счел бы в такой ситуации за честь ее вернуть. Цитата: 
	
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Одноименное свойство можно только в прототип добавить: 
	
var object = {
    a: 1
};
object.__proto__.a = 2;
alert([object.a, object.__proto__.a]);
 | 
	
		
 Нет никаких хэшей в JavaScript-е, есть объекты, которые иногда называют хэшами, но это одно и то же. 
	Цитата: 
	
  | 
	
		
 Цитата: 
	
 p.s. это не фича, а особенность языка  | 
| Часовой пояс GMT +3, время: 13:07. |