В настоящее время я пытаюсь проверить строки условий нескольких объектов «настройки» в своей области видимости. Вероятно, просто быстрее показать пример структуры:
"root": {
"Check1": {
type: "checkbox",
text: "test",
value: false,
},
"Check2": {
type: "checkbox",
text: "should only show up if test is checked",
value: false,
condition: "Check1.value"
}
}
Поэтому я использую цикл for для итерации ключей корневого объекта, чтобы получить дочерние объекты, а затем попробуйте «eval.call ()» условие в контексте корневого объекта, например:
for (var p in root) {
var prop = root[p];
if (prop.condition != null) {
var result = function(str){
return eval(str);
}.call(root, prop.condition);
// if result false, hide...
}
}
однако при обработке «Check2» -элемента это всегда будет вызывать подобное исключение:
VM981:1 Uncaught ReferenceError: Check1 is not defined
at eval (eval at <anonymous> (test.js:299), <anonymous>:1:1)
Я также безуспешно пытался использовать eval.call(root, condition)
и window.eval.call(root, condition)
.
Возможно, я что-то упустил, но я также не смог найти очень информативного материала о том, что конкретно делает функция .call()
в связи с .eval()
.
Буду признателен за любую помощь - заранее спасибо!