| 
	| 
	
	| 
		
	| 
			
			 
			
				20.01.2015, 20:15
			
			
			
		 |  
	| 
		
			
			| Аспирант     |  | 
					Регистрация: 15.01.2015 
						Сообщений: 39
					 
		
 |  |  
	| 
	
 
	| Сообщение от kobezzza |  
	| встроенный метод toSource (это и есть антипод eval) |  
	
 
o={a: 1}
a=Object.create(o)
alert(a.a)
alert(eval((a.toSource()).a))
alert(eval(a.toSource()).a)
alert(eval(a.toSource())===a)
			 Последний раз редактировалось registrant, 20.01.2015 в 20:21.
 |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 20:16
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.01.2015 
						Сообщений: 15
					 
		
 |  |  
	| registrant, ясно. Это Ваше мнение, спорить не буду.kobezzza, спасибо за разъяснения. Я не программист, это хобби, пишу себе на смартфон приложения для себя, вот недавно открыл js, времни мало, постигаю потихоньку тонкости). Сложностей не испытываю, но приходится пересматривать привычные вещи (например прототипы, а не классы, итд)
 |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 20:26
			
			
			
		 |  
	| 
		
			
			| Аспирант     |  | 
					Регистрация: 15.01.2015 
						Сообщений: 39
					 
		
 |  |  
	| 
	
 
	| Сообщение от dimy44 |  
	| но приходится пересматривать привычные вещи (например прототипы, а не классы, итд) |  
	
 Не приходится, видимо. Иначе спасибо за эту феерию бреда тут не наблюдалось бы. Хотите классов как в питоне, используйте байнд или замыкания. Чтобы врубиться в прототипы, или классы в стиле смолток/руби, придется включить мозг. |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 20:33
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.01.2015 
						Сообщений: 15
					 
		
 |  |  
	| Давайте закончим споры, я ответ на свой вопрос получил, для этого тему и создавал. Для флуда разве здесь нету курилки etc? |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 20:36
			
			
			
		 |  
	| 
		
			
			| Аспирант     |  | 
					Регистрация: 15.01.2015 
						Сообщений: 39
					 
		
 |  |  
	| 
	
 
	| Сообщение от dimy44 |  
	| я ответ на свой вопрос получил |  
	
 получили от меня. Ваша хотелка невозможна в JS в общем случае. Не надо путать объект с хешем. 
А спрорить я и не собираюсь. |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 20:45
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.01.2015 
						Сообщений: 15
					 
		
 |  |  
	| registrant, от Вас я получил только информацию, что Python это говноязык. Мне ответил участник в посте #2, я сразу реализовал то что хотел. Думал, тема закрыта. |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 20:48
			
			
			
		 |  
	| 
		
			
			| Аспирант     |  | 
					Регистрация: 15.01.2015 
						Сообщений: 39
					 
		
 |  |  
	| 
	
 
	| Сообщение от dimy44 |  
	| Мне ответил |  
	
 Да он что-то там ответил. Если Вас интересует не правильный ответ, а первый встретившийся, тогда норм.
 
И я не буду тратить больше на Вас время. |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 21:04
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 12.01.2015 
						Сообщений: 15
					 
		
 |  |  
	| Меня это решение устроило. В моем случае это не тот js, о который здесь обсуждают, это фреймворк на андроид, там урезано много, приходится выкручиваться. |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 21:20
			
			
			
		 |  
	| 
		
			|  | Быдлокодер;)       |  | 
					Регистрация: 19.11.2010 
						Сообщений: 4,338
					 
		
 |  |  
	| 
	
 
	| Сообщение от registrant   |  
	| 
o={a: 1}
a=Object.create(o)
alert(a.a)
alert(eval((a.toSource()).a))
alert(eval(a.toSource()).a)
alert(eval(a.toSource())===a)
 |  
	
 
(function () {
	var toSource = Object.prototype.toSource;
	Object.defineProperty(Object.prototype, 'toSource', {
		 writable: true,
		 configurable: true,
		 enumerable: false,
		 value: function () {
			var clone = {};
			
			for (var key in this) {
				clone[key] = this[key];
			}
			
			return toSource.call(clone);
		}
	});
})();
var a = {a: 1};
var b = {
	__proto__: a, 
	c: 1,
};
alert(eval(b.toSource()).a);
 |  |  
	| 
		
	| 
			
			 
			
				20.01.2015, 21:47
			
			
			
		 |  
	| 
		
			
			| Аспирант     |  | 
					Регистрация: 15.01.2015 
						Сообщений: 39
					 
		
 |  |  
	| kobezzza,
  
(function () {
    var toSource = Object.prototype.toSource;
 
    Object.defineProperty(Object.prototype, 'toSource', {
         writable: true,
         configurable: true,
         enumerable: false,
         value: function () {
            var clone = {};
             
            for (var key in this) {
                clone[key] = this[key];
            }
             
            return toSource.call(clone);
        }
    });
})();
 
var a = {a: 1};
var b = {
    __proto__: a,
    c: 1,
};
 
alert(eval(b.toSource())===b);
Но ты можешь проще выйти из этой ситуации
 
Object.prototype.toSource=function(){return this}
 
var a = {a: 1};
var b = {
    __proto__: a,
    c: 1,
};
 
alert(eval(b.toSource().a))
alert(eval(b.toSource())===b)
Все правильно работает, пока цирк не уехал. |  |  
 
 
 
 |  |