registrant, Ну как бы логично, что объект создаваемый из строки не должен быть равен объекту прародителю, ибо это другой объект, а в JS объекты сравниваются по ссылке.
Разумеется, если нужно, то можно сделать чтобы равнялось, также можно воссоздать дерево прототипов и т.д. JS позволяет всё это сделать, а в ES6 добавили специальный объект Reflect, в котором есть методы для ещё более удобной работы с объектами. |
Цитата:
|
Цитата:
Ну а если очень нужно (только не понятно зачем), чтобы полученный объект был равен исходному, то можно и это сделать, как говорится: было бы желание. |
kobezzza,
Я считаю, что это порочная практика, противоречащая идеологии 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]; })(); */ И т.д. по аналогии, всё зависит от требований. Цитата:
|
dimy44,
Цитата:
|
Ты ж сам говорил, что сперва надо с прототипами навозиться :D
|
Мне не важно, чтобы восстановленный объект был строго равен прородителю, нужно чтобы он вел себя также, как и прородитель.
А различие в том, что в строковом представлении скажем словаря dct = {1: "1"} в питоне будет '{1: "1"}' (что str(dct), что repr(dct)), и eval(dct) его можно назад в словарь превратить, а в js по-другому. |
Цитата:
Да-да, надо сначала хотя бы немного осилить прототипы! |
Цитата:
|
Часовой пояс GMT +3, время: 20:01. |