On 11:59 AM, Dmitry A. Soshnikov wrote:
Moreover, forgot to mention. Passing the generator function ("g-function" and "g-object" for shortness) as an argument for the `Generator` constructor is not good for dynamically bound `this` value (notice, that in Python's `self` is just a casual variable/argument, which should be passed manually anyway).

I.e. we should have `this` as `foo` in the following example:

let foo = {
  bar: function () {
    yield (this == foo);
  }
};

let g = new Generator(foo.bar);
g.next(); // false
g.next.apply(foo,[]);  // true

However,

let g = foo.bar();
g.next(); // true
Could you please explain the reasoning here? I can't figure it out. To me, g.next() has to mean that in "next", this===g. I can't see a path to conclude that foo is involved. It's only role is to hold the property 'bar' which is a function constructing 'g'.


But I don't see a big need in such a wrapper. If the rules are specified, there should be no any confusion with using call expression for getting g-object, and then use `next` to executed the continuation.
Perhaps we need a little user testing to see whose claims hold up.

jjb
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to