javascript - 命名空间 QScriptEngine 扩展

标签 javascript qt plugins qtscript

有人可以向我解释如何在 QScriptEngine 扩展中获得命名空间吗?我已经设置好了,所以我在 script/下有一个目录 foo/,其中正在执行一个 __init__.js 文件。

__setupPackage__(__extension__);
print(__extension__);

hello = function() { return 5; };

在我的 C++ 代码中: engine.evaluate("你好();");//工作正常

所以我的问题是,如果像 foo/bar/whatever (foo.bar.whatever) 这样的文件层次结构都被集中到一个全局命名空间中,那么它们有什么意义呢?我见过一些例子,他们试图在代码中创建一个命名空间,但我似乎无法在不出现编译器错误的情况下让它工作。

      foo = {
          hello : function() { return 5; }
      };

在我的 C++ 代码中:

      engine.evaluate("foo.hello();");

我是否误解了 Qt 处理 namespace 的方式?是否真的应该将所有内容都混入全局范围内,而不管它是从哪个文件中获取的?是否有创建这些类型的 namespace 的适当示例?谢谢。

最佳答案

命名空间(在 C++ 等语言中众所周知)在 JavaScript 中不存在。在 JS 中获得类似命名空间的行为的唯一方法是将东西封装在一个对象中,其中对象的名称定义了命名空间

此示例将在 JS 中创建一个“命名空间”foo,其中包含一个方法“bar”,以及一个包含方法“hello”的命名空间“foo.baz”:

var foo = {
    bar : function(){ return 5; },
    baz : {
        hello : function(who){ return 'Hello ' + who + '!'; }
    }
};

希望这对您有所帮助。

关于javascript - 命名空间 QScriptEngine 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681921/

相关文章:

javascript - Linux 服务器 - 路径

Qt Widget 暂时全屏

c++ - 插件如何使用 C++ 调用其他插件?

python - 找不到键盘映射 'Windows Proper Redo"

javascript - 如何在 React 中更新我的帖子的评论

javascript - 打印大量字符串但将其限制为 40 个字符

javascript - 在 JavaScript 中,我可以以编程方式为文件输入元素触发 "click"事件吗?

qt - 跨平台最终用户帮助创作工具

c++ - NetworkManager 和 Qt 问题

plugins - 如何查看Gradle Jetty插件中使用的Jetty版本