Обновление Код функции/класса хранится в строке, поэтому я не могу назвать ее напрямую. Идея состоит в том, чтобы делать интроспекцию объекта и перечислять его элементы данных, которые работают, когда они являются функциями, но не работают, когда переменная, подобная приведенной ниже, оценивается.eval возвращает имя переменной вместо undefined. (javascript)
Я пытаюсь оценить объект в javascript. Что-то вроде этого.
var myObj {
greet: "Greeting",
myPrint: function() {
alert("hello");
}
};
Идея заключается в том, чтобы быть в состоянии выполнить это в Eval и получить имя переменной каким-то образом (myObj) или созданный объект. Я экспериментировал с различными методами, используя eval, но не могу понять это. Это работает, когда у меня есть что-то вроде этого.
function myObj() {
this.greet = "Greeting";
this.myPrint = function() {
alert("hello");
}
};
Выполнение eval ("(+ код +") "); где код - это строка, содержащая указанную выше функцию, возвращает myObj() мне.
Обновление 2 Так что в принципе я хочу оценить что-то вроде этого. eval ("var x = 5"); и я пытаюсь получить x. Поскольку его строка оценивается, хотя она добавляется в пространство имен окна, нет возможности расшифровать ее, кроме разбора строки. Теперь это просто простой пример, но, как я уже сказал, это немного сложно с 1-й частью кода. Как я сказал ... eval ("function test() {return 'hello';}"); return test(), который похож на то, что я ожидаю для инструкции «var x = 5».
Есть ли способ сделать это аналогичным образом для 1-го случая, который у меня отсутствует? Thanks
Я не совсем уверен, что вы хотите сделать, но более насущный вопрос: почему вы хотите это сделать? Что вы пытаетесь решить? –
В основном я хочу, чтобы изучить все члены данных класса/функции. Тем не менее, код на самом деле произволен и вставляется в текстовое поле, откуда я должен заглядывать. (Подумайте об этом как о некоторой функции для IDE, которая может отображать все элементы данных). Я знаю, что произвольный код опасен для eval, но это совершенно другое назначение. – ssarangi
Ваш код 'myObj' недопустим javascript. Можно ли предположить, что это опечатка, или это фактический контент, который вам нужно как-то оценить? –