phpv8 / v8js

V8 Javascript Engine for PHP — This PHP extension embeds the Google V8 Javascript Engine
http://pecl.php.net/package/v8js
MIT License
1.84k stars 200 forks source link

forEach / map is not a function #451

Open theboredfish opened 4 years ago

theboredfish commented 4 years ago

This one I feel is bordering on help/feature request than an issue, so apologies in advance..

If I pass an iterable into the JS world (in my case, an instance of a class that extends ArrayIterator) then attempting to get forEach or map functions on it throws an error

TypeError: users.forEach is not a function

meaning that i can't have an interoperable lazy loader that works with the same JS code.

Is this actually do-able? I appreciate i can process and pass the items as a 'true' array, but these are database records and could be plentiful. If there are any hooks / magic methods / tricks that can be used to fool V8 into allowing this to work, that'd be awesome.

stesie commented 4 years ago

Oh, nice catch that the ES6 features are still missing.

And yes, this should be do-able. I haven't (yet) tried whether it'd be even possible to simply reuse the implementations on Array.prototype