2

thisjavascript中的javascript生成器的价值是什么?在下面的代码中,两个比较都返回 false,当我执行 a 时.toSource()this似乎是一个 empty Object。对 ECMA 或 MDN 文档的引用会很有帮助,我在其中都找不到任何东西。

function thisGenerator(){
    while(1)
        yield this;
}

var gen=new thisGenerator();
alert(gen.next()==thisGenerator);
alert(gen.next()==gen);
4

1 回答 1

1

this仍然遵守正常规则。考虑到,全局范围是window

var gen = (function() { yield this; })(); gen.next() === window // true
var gen = (function() { "use strict"; yield this; })(); gen.next() === undefined // true

在 quirks 模式下,this未绑定函数将是全局范围(恰好是window),而在严格模式下是undefined.

PS:调用绑定的函数时,一切照旧:

var o = { foo: function() { yield this; } }; o.foo().next() === o // true
var o = {}; function foo() { yield this; }; foo.call(o).next() === o // true
于 2013-08-13T22:37:10.743 回答