Thanks for your answer! :) In the (1) solution of yours, is there a way to be able to create functions that behave like scripts? I mean, that if I write onclick="1+1", then if I parse and run "1+1" as a function it would return 2 without using the "return" keyword (e.g.: "return 1+1")?
2019. június 20., csütörtök 16:04:53 UTC+2 időpontban Caitlin Potter a következőt írta: > > I don’t believe you can do exactly what you want here, as there are two > parts: > > 1) getting `this` set properly. I believe you should be able to use > `CompileFunctionInContext()` to this effect, which is used to provide > implicit arguments to DOM onxxx=“script...” handlers. I believe you can > then make `this` whatever you want in that function. Return statements > would still be legal, as they are in DOM events, though. > > 2) completion value of the script. This is trickier, as the v8 API does > not expose a way to run the AST rewriter on arbitrary functions afaict. It > may be possible to introduce an API for this, if it’s important. > > You might be able to take a third option, transforming the code with a > custom Babel plugin before passing it to v8 (at runtime), and providing the > sourcemap info along with it for debugging purposes. > > On Jun 20, 2019, at 9:49 AM, Zoltan B <zben...@gmail.com <javascript:>> > wrote: > > Any ideas? :) > > 2019. június 7., péntek 13:16:08 UTC+2 időpontban Zoltan B a következőt > írta: >> >> Hi! >> >> Is there a way to provide value for the 'this' keyword, when I'm running >> a v8 Script? >> >> An alternative would be to compile the code as a function instead, and >> provide 'this' when calling it trough 'recv', but then I would have other >> issues: running a script like this: "1+1" would not return 2 as a result, >> as I would have to explicitly put a "return" in front of "1+1", so the >> function will return the script's value. This seems to be error prone, not >> to mention that script locations will skew when viewed from DevTools. Using >> "return eval('1+1')" would work, but it kills performance due to the eval. >> >> -- > -- > v8-users mailing list > v8-u...@googlegroups.com <javascript:> > 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-u...@googlegroups.com <javascript:>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/v8-users/746a4d9f-d364-4506-8783-347eee5dad6c%40googlegroups.com > > <https://groups.google.com/d/msgid/v8-users/746a4d9f-d364-4506-8783-347eee5dad6c%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > -- -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/edc28096-a090-4188-9828-11ed67ddd6c1%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.