#javascript #objective-c #cocoa #javascriptcore
#javascript #objective-c #какао #javascriptcore
Вопрос:
Существует ли единый способ обнаружения изменений состояния виртуальной машины в JavaScriptCore из хост-программы? В настоящее время я использую новый Obj-C API, но я не против переключиться на стандартные API WebKit, если это даст мне то, что я хочу.
В идеале я мог бы сделать что-то вроде этого:
JSContext *ctx = [JSContext new];
[ctx registerMythicalChangeWatcher:aBlockOrDelegate];
[ctx evaluateScript:@"var deez = 'nuuuts'"]; // aBlockOrDelegate is informed of changed to "deez"
В настоящее время лучшее, что я могу придумать, это в основном обходить глобальный объект после каждого eval, что, как вы можете себе представить… неоптимально 🙂
Интерфейс Obj-C не имеет ссылки на класс, которую я могу найти, поэтому я полагался на просмотр заголовков, и это кажется довольно ограниченным, поэтому я полагаю, что если это можно сделать, мне нужно будет перейти в API WebKit C. К сожалению, мой google-fu привел меня в круги или к документации по V8 или тому, что они называют JS-движком Mozilla на этой неделе.
Любая помощь будет высоко оценена!
Комментарии:
1. Как бы вы это сделали в чистом JS?
2. В принципе, вы не можете, во всяком случае, с уверенностью. Но это похоже на то, что должно быть выполнимо из хост-приложения.