> > `myObj.onevent()` invokes `onevent()` with `this === myObj`. Unless > you want to deviate significantly from normal JS semantics, you would > need to maintain a reference to `myObj` anyway. >
(The spec I'm emulating actually states that `onevent()` is invoked with the global context.) Sorry, I don't think I described the issue well. The issue is not `onevent` needing to maintain a contextual ref to `myObj`, but rather that if `onevent` references `myObj` in its JS function body, then `myObj` will not get GC'ed because `onevent`'s function is stored in a Persistent handle. JS: var myObj = new MyObj(); myObj.onevent = function () { // (a C++ setter) console.log(myObj); // reference to myObj here } myObj.doSomethingAsync(); // causes `onevent` to fire eventually C++ (pseudo) class MyObj : ObjectWrap { Persistent<Function> _onevent; void setOnEvent(Local<String> prop, const PropertyCallbackInfo<Value>& info); // stores fn arg in _onevent } A work-around is to not use C++ for the `onevent` setter, but I'm still curious how this would be done in C++. Would the class member be instead a Local<Function>, and have to be set with `EscapeableHandleScope scope(isolate); _onevent = scope.Escape(functionArg);` (ish)? Thanks, Zach -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.