JS相等运算符(如===)是否可以使用embind类型

Can the JS equality operators (like ===) work with embind types?

本文关键字:可以使 是否 embind 类型 JS 运算符      更新时间:2023-10-16

假设我有一些Emscripten绑定,如下所示:

class_<MyNode>("MyNode")
.constructor<>()
.function("getParentNode", &MyNode::parentNode, allow_raw_pointers());

当我在JS中运行以下代码时,我得到false,但我希望它是true:

node.getParentNode() === node.getParentNode()

我猜这是因为Emscripten将每个函数调用的结果包装在一个新的JS对象中,即使JS对象指向相同的底层C++对象。

也就是说,在Emscripten中,JS=====是否有一些技巧可以在绑定类型具有相同底层原始指针值的情况下返回true?

可能不会。来自MDN文档中的严格相等运算符:

如果两个操作数都是对象,则仅当它们引用同一对象时才返回true

您可能对这个SO线程感兴趣,询问如何";"过载";相等运算符