Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript QML-将JS函数的代码作为字符串获取_Javascript_Qt_Function_Qml_Tostring - Fatal编程技术网

Javascript QML-将JS函数的代码作为字符串获取

Javascript QML-将JS函数的代码作为字符串获取,javascript,qt,function,qml,tostring,Javascript,Qt,Function,Qml,Tostring,似乎可以在JavaScript中获取函数的代码,其简单程度如下: function foo() {...} foo.toString() 然而,在QML中这样做给了我一个相当乏味的函数(){[code]} 那么,有没有办法也获得[code]部分呢?我也尝试了JSON.stringify(),但没有任何效果。 对于JS函数,QT不支持获取函数字符串的另一个选项。但是,如果您解释为什么需要它,我们可能会找到另一个解决方案。我想总结一下评论中的讨论,因为这可能是对未来搜索的一个很好的回应 如评论中所

似乎可以在JavaScript中获取函数的代码,其简单程度如下:

function foo() {...}
foo.toString()
然而,在QML中这样做给了我一个相当乏味的
函数(){[code]}

那么,有没有办法也获得
[code]
部分呢?我也尝试了
JSON.stringify()
,但没有任何效果。


对于JS函数,QT不支持获取函数字符串的另一个选项。但是,如果您解释为什么需要它,我们可能会找到另一个解决方案。

我想总结一下评论中的讨论,因为这可能是对未来搜索的一个很好的回应

如评论中所述,它看起来是QML的一个明显缺陷。 他们声称:

QML运行时实现ECMAScript语言规范标准

不管怎么说,事实并非如此

感谢Meetfe,这是关于这个问题的开放bug的链接

同样的错误似乎也存在,他们建议查看参考资料以了解更多细节:

有关详细说明,请参阅ECMA-262规范

它(至少在我看来)是一个完全兼容的声明,再一次让我想到了一个bug,而不是规范的部分实现


所以,不幸的是,这是一种使函数变得严格的方法(确实是有意义的,因为它是一个兼容ECMAScript的环境),但是它在QML中不正确工作,即使它应该在文档中说明。

如果它是一个内置函数,显示代码将是不有用的,因为它很可能是用C++编写的。[守则]不管是内置函数还是C++函数,都是从C/C++或自定义的用户JS函数中得到的。这不是你的问题的答案,但是我想在这里给出一个警告。函数是JavaScript中抽象的基本方法。我可以看到它对于测试和工具的目的是如何能够检查F的代码。函数,但这将打破抽象障碍,并可能导致难以维护的紧密耦合代码。其目的是序列化不是由js源创建的动态组合对象,将其转换为代码。可以对属性执行此操作,但对函数不执行此操作。事实上并非如此一个符合js的环境。我从来没有注意到这一点。你的例子甚至不是关于QML的。是的,对不起。我做了一个新的回答。好的,我添加了重要的部分。我已经在问题下面的评论中解释了为什么我需要它。你引用的链接没有说明QML不支持此功能,根据参考信息对于ECMA合规性,skypjack提供的nced是强制性的。因为您无法找到关于不存在的所有信息
Function Properties
    toString()
    apply(thisArg, argArray)
    call(thisArg [, arg1 [, arg2, ...]])
    bind((thisArg [, arg1 [, arg2, …]])