有人可以向我解释如何在 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/