 
			
				20.01.2015, 21:51
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Быдлокодер;) 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.11.2010 
					
					
					
						Сообщений: 4,338
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 registrant, Ну как бы логично, что объект создаваемый из строки не должен быть равен объекту прародителю, ибо это другой объект, а в JS объекты сравниваются по ссылке. 
 
Разумеется, если нужно, то можно сделать чтобы равнялось, также можно воссоздать дерево прототипов и т.д. JS позволяет всё это сделать, а в ES6 добавили специальный объект Reflect, в котором есть методы для ещё более удобной работы с объектами. 
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.01.2015, 21:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.01.2015 
					
					
					
						Сообщений: 39
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от kobezzza
			
		
	 | 
 
	| 
		ибо это другой объект
	 | 
 
	
 
 Вот это ключевое слово.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.01.2015, 21:59
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Быдлокодер;) 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.11.2010 
					
					
					
						Сообщений: 4,338
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от registrant
			 
		
	 | 
 
	| 
		Вот это ключевое слово.
	 | 
 
	
 
 Дык он и должен быть другим, мы создаём дамп объекта в виде синтаксиса JS, а потом снова натравливаем VM на полученный код и он возвращает новый объект, похожий на прародитель и это абсолютно нормальное поведение, а такая функция может понадобится, если нам по каким либо причинами не подходит JSON (ну например хотим сохранять функции без гемороя с экранированием).
 
Ну а если очень нужно (только не понятно зачем), чтобы полученный объект был равен исходному, то можно и это сделать, как говорится: было бы желание.  
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.01.2015, 22:09
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.01.2015 
					
					
					
						Сообщений: 39
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 kobezzza, 
 Я считаю, что это порочная практика, противоречащая идеологии JS в корне. Ты разрушаешь таким образом цепочки делегирования. Течет вся абстракция. Для подобных целей (манипуляций данными) надо использовать структуры данных, которые статичны, в отличии от. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.01.2015, 22:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Быдлокодер;) 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.11.2010 
					
					
					
						Сообщений: 4,338
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Я считаю, что это порочная практика, противоречащая идеологии JS в корне.
	 | 
 
	
 
 Я не говорю, что это хорошо или плохо, а просто показываю что это возможно.
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Ты разрушаешь таким образом цепочки делегирования. Течет вся абстракция.
	 | 
 
	
 
 В методе можно учесть это, чтобы, например,
 
var a = {a: 1};
var b = {__proto__: a, v: 1};
b.toSource()
/*
(function () {
  var stack = [];
  stack.push({a: 1});
  stack.push({__proto__: stack[stack.length - 1], v: 1});
  return stack[stack.length - 1];
})();
*/
И т.д. по аналогии, всё зависит от требований.
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Для подобных целей (манипуляций данными) надо использовать структуры данных.
	 | 
 
	
 
 Здесь я согласен, поэтому ТС сразу получил ответ - использовать JSON.  
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.01.2015, 22:26
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.12.2013 
					
					
					
						Сообщений: 1,856
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		dimy44,
  
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Сложностей не испытываю, но приходится пересматривать привычные вещи (например прототипы, а не классы, итд)
	 | 
 
	
 
 Кто сказал про классы в JS? Они уже есть  https://github.com/lukehoban/es6features#classes 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.01.2015, 11:00
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.09.2013 
					
					
					
						Сообщений: 1,436
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Ты ж сам говорил, что сперва надо с прототипами навозиться    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.01.2015, 12:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.01.2015 
					
					
					
						Сообщений: 15
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Мне не важно, чтобы восстановленный объект был строго равен прородителю, нужно чтобы он вел себя также, как и прородитель.  
А различие в том, что в строковом представлении скажем словаря dct = {1: "1"} в питоне будет '{1: "1"}' (что str(dct), что repr(dct)), и eval(dct) его можно назад в словарь превратить, а в js по-другому. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.01.2015, 12:44
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.12.2013 
					
					
					
						Сообщений: 1,856
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Erolast
			 
		
	 | 
 
	
		Ты ж сам говорил, что сперва надо с прототипами навозиться  
	 | 
 
	
 
 Ахаха, лол    Что-то я про это забыл) 
Да-да, надо сначала хотя бы немного осилить прототипы!  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				21.01.2015, 13:15
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.11.2010 
					
					
					
						Сообщений: 301
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от dimy44
			 
		
	 | 
 
	
		Мне не важно, чтобы восстановленный объект был строго равен прородителю, нужно чтобы он вел себя также, как и прородитель.  
А различие в том, что в строковом представлении скажем словаря dct = {1: "1"} в питоне будет '{1: "1"}' (что str(dct), что repr(dct)), и eval(dct) его можно назад в словарь превратить, а в js по-другому.
	 | 
 
	
 
 Строгое равенство реально для строк, чисел, логических значений и null. Остальные значения объекты и для их создания из строки нужен вызов конструктора, а в таких случаях строгое равенство невозможно. Разве что можно реализовать конструктор который будет запоминать свои экземпляры и при повторных вызовах с теми же параметрами не создавать новый объект, а выдавать существующий.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |