【发布时间】:2021-05-17 23:40:53
【问题描述】:
目标:我正在尝试在 JavaScriptCore 中运行 JSLint。
旧版本
较早的 JSLint 版本公开了一个名为 JSLINT 的全局函数,如下所示:
var JSLINT = (function () {
...
}
这很容易在 JavaScriptCore 中检索和执行:
// Assume 'ctx' is a JSGlobalContextRef
// Assume we have already called JSEvaluateScript()
JSStringRef jsFunctionName = JSStringCreateWithUTF8CString("JSLINT");
JSValueRef jsLintFunctionValue = JSObjectGetProperty(ctx, JSContextGetGlobalObject(ctx), jsFunctionName, NULL);
JSStringRelease(jsFunctionName);
JSObjectRef jsLintFunction = JSValueToObject(ctx, jsLintFunctionValue, &exception);
有了这个引用,我就可以使用JSObjectCallAsFunction() 来执行该函数。完美运行。
新版本
现在,JSLint 已移至此:
export default Object.freeze(function jslint(
source = "",
option_object = empty(),
global_array = []
) {
...
});
JavaScriptCore 的文档很差。我尝试了很多东西,但显然缺少一些明显的东西。我现在如何检索和执行jslint 函数?
【问题讨论】:
标签: javascript c jslint javascriptcore