Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   антипод eval (https://javascript.ru/forum/misc/52932-antipod-eval.html)

dimy44 13.01.2015 17:49

антипод eval
 
Поскажите, какая функция в js является антиподом eval. В python это repr. Чтоб я мог, скажем, массив сохранить в файл в строковом представлении, а при надобности гарантированно мог восстановить с помощью eval.

рони 13.01.2015 18:00

dimy44,
http://learn.javascript.ru/json

dimy44 13.01.2015 18:12

Понял, спасибо.

registrant 15.01.2015 21:56

dimy44,
Такое возможно только в говноязыках. В js этого сделать невозможно, в общем случае. это возможно только для "ненастоящих" объектов, которые ты конвенциально, по взаимной договоренности, используешь как таблицу.

VANjs 19.01.2015 17:21

Цитата:

Сообщение от registrant
... Такое возможно только в говноязыках. В js этого сделать невозможно...

ну типа js это супер язык, но как раз в нем, то что именно требуется сделать, а вот и низзя!!!


Логика отдыхает :))))))))))

Aetae 19.01.2015 21:02

Ну ещё можно так:
function foo(){
   bar('парам пам пам')
}

alert(foo.toString())
alert(foo.toSource())

Но в твоём случае нужен именно json.

registrant 20.01.2015 16:23

Цитата:

Сообщение от VANjs
Логика отдыхает

андронный коллайдер -- зачетная штука, но ей нельзя забивать гвозди, какая жалость. Вот она где, логика...

dimy44 20.01.2015 19:53

Цитата:

Сообщение от registrant (Сообщение 351601)
dimy44,
Такое возможно только в говноязыках. В js этого сделать невозможно, в общем случае. это возможно только для "ненастоящих" объектов, которые ты конвенциально, по взаимной договоренности, используешь как таблицу.

Я привел пример из Python. Вы действительно считаете питон говноязыком? Хм...

registrant 20.01.2015 19:57

Цитата:

Сообщение от dimy44
Вы действительно считаете питон говноязыком? Хм...

Да.

kobezzza 20.01.2015 20:05

В современном JS все объекты имеют встроенный метод toSource (это и есть антипод eval), который возвращает исходный код объекта, например,

alert({a: 1, v: 2}.toSource());
alert([1, 2, 3].toSource());
alert(function () {
  alert(121);
}.toSource());


Про JSON уже говорилось, но это частный случай, т.к. (JS != JSON).

Также ещё у объектов есть встроенный метод toString, но результат его работы в большинстве случае отличается от toSource, т.к. данный метод возвращает строковое представление объекта, а не его исходный код, например,

alert({a: 1, v: 2}.toString());
alert([1, 2, 3].toString());
alert(function () {
  alert(121);
}.toString());


Разумеется, эти базовые методы можно переопределять своими.

Цитата:

Я привел пример из Python. Вы действительно считаете питон говноязыком? Хм...
Да это просто тролль, их тут полно на форуме, можешь игнорить его :)


Часовой пояс GMT +3, время: 14:52.