@Emulyator

Как получить текст кода функции свойства объекта JavaScript?

Существует ли возможность средствами JavaScript получить доступ к коду функции которая задана "внутри" свойства объекта? Для методов (функций) объекта хорошо работает toString(), но для свойств, по понятным причинам, результат мне не подойдет.
Нужно реализовать сохранение/восстановления объекта через текстовый формат (JSON например).
var objA = {v:2};
var objB = {v:2};
var objC = {fn:function(){return objA.v + objB.v} };
Object.defineProperty(objC,"pr",{
  get: function(){ return objA.v + objB.v },
  enumerable: true,
  configurable: true
});
console.log('objC.fn()= ' + objC.fn());
console.log('objC.pr= ' + objC.pr;
console.log('objC.fn.toString()= ' + objC.fn.toString());
console.log('objC.pr.toString()= ' + objC.pr.toString());

результат:
objC.fn()= 4
objC.pr= 4
objC.fn.toString()= function () { return objA.v + objB.v; }
objC.pr.toString()= 4


т.е. хотелось бы каким-то хитрым способом в последней строке получить код свойства "pr" (как в предпоследней), а не 4. ))
p.s.:
не факт что важно, но на всякий случай скажу, что все это применяется не в браузере, а в десктоп приложении (c++ Qt) с использованием класса QJSEngine.

заранее спасибо за любые идеи.
  • Вопрос задан
  • 4006 просмотров
Решения вопроса 1
console.log('objC.pr.toString()= ' + Object.getOwnPropertyDescriptor(objC, 'pr').get.toString());

Ну а если серьёзно, то лучше пересмотреть архитектуру. Необходимость воссоздавать функции явная недоработка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
var obj1 = {
  func: function(){
  console.log(1111);
}
}
obj1.func();
console.log(obj1.func);

вызов функции без () передает ее текст, зачем toString вообще использовать в этом случае?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы