当一个暴露给 v8 的 C++ 对象被删除时,如何使可能指向该对象的句柄无效。
我使用 v8 作为更大应用程序的脚本接口。大型应用程序中的对象在 v8 中使用节点的 ObjectWrap 类进行包装和访问。
问题是,包装对象的生命周期是有限的。如果,在 javascript 中,我执行类似:
var win = app.getWindow();
win.close(); // The C++ object that win references goes away
console.log(win.width()); // This should fail.
我希望它的行为就像评论所说的那样。在 win.close() 之后(或其他一些可能超出 JS 控制的事件),任何对 win 或重复句柄的访问都需要失败。
目前,我必须将包装的 C++ 对象标记为无效并检查每个方法调用的有效性。这是唯一的方法,还是有办法将句柄标记为不再有效?