gpt4 book ai didi

javascript - Rhino 中的原生函数是如何创建的?

转载 作者:搜寻专家 更新时间:2023-11-01 05:13:33 24 4
gpt4 key购买 nike

我一直在看 Rhino documentationsource code有关如何实现我自己的全局 native 函数的线索。然而,这项任务比我预期的要复杂。

看完code关于 RingoJS 中 require 函数的实现,我认为我需要按照以下几行做一些事情:

import org.mozilla.javascript.BaseFunction;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.Context;

public class MyGlobalNativeFunction extends BaseFunction {
public MyGlobalNativeFunction() {}

public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
// implementation of my function
}

public int getArity() {
return 1;
}
}

我在正确的轨道上吗?关于如何实现这一目标的分步演练会很棒。

另外,如果我可以使用 Rhino 的 defineClass 函数来创建我的全局原生函数,那就太好了。我不太热衷于推出我自己的 Rhino 修改版本,只是因为我想实现一个 native 功能。

最佳答案

我认为这应该可行,如果您只想实现一个全局函数,这是一个很好的方法。如果要实现多个功能或一个宿主对象,还有其他方法。

然后您将使用类似这样的东西来实例化您的函数:

scope.defineProperty("myNativeFunction",
new MyGlobalNativeFunction(),
ScriptableObject.DONTENUM);

查看 RingoGlobal了解这是如何完成的(它还展示了如何在一次扫描中定义多个函数,而不必为每个函数创建一个类)。 Rhino examples directory包含一些如何使用 Rhino 创建适当的宿主对象的示例。

关于javascript - Rhino 中的原生函数是如何创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13033080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com