eval
будет работать с объектами, которые находятся в области видимости, как и ожидалось:
js> var o = {}
js> eval('o.p = 1')
1
js> o.p
1
Вам следует учесть, нужна ли вам гибкость eval
для того, что вы делаете.Может ли somecallback
быть свойством объекта?Если это так, вы можете позвонить, например, o[fn]()
, где fn
- это somecallback.Это намного безопаснее, чем использовать eval
.Ваш раздел <complete>
слишком расплывчат для меня, чтобы рекомендовать способ избежать eval
во втором случае.