我对Qt Javascript有疑问。
在大多数情况下,javascript使用引用计数或标记和清除垃圾回收。我很好奇Qt是如何做到的。
特别是,我可以使用QJSValue将javascript对象传递给C ++。我想将javascript回调函数传递给C ++方法,并异步调用该函数。(例如,http响应)是否安全,因为QJSValue引用了该对象?我不能确定。
如果Qt使用标记和扫描垃圾收集,那么它如何标记C ++方面的参考?那么Qt javascript使用引用计数吗?
答案 0 :(得分:1)
http://doc.qt.io/qt-5/qjsvalue.html
请注意,isObject()为true的QJSValue只携带对实际对象的引用;复制QJSValue只会复制对象引用,而不是对象本身。如果要克隆一个对象(即将对象的属性复制到另一个对象),可以借助脚本代码中的for-in语句或C ++中的QJSValueIterator来实现。
QJSValue带有参考。