Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript生成器的值_Javascript_Generator_Ecmascript 6 - Fatal编程技术网

javascript生成器的值

javascript生成器的值,javascript,generator,ecmascript-6,Javascript,Generator,Ecmascript 6,在javascript中的javascript生成器中,this的值是多少? 在下面的代码中,两个比较都返回false,当我执行.toSource()时,这个对象看起来是空的对象。参考ECMA或MDN文档会很有帮助,我在这两个文档中都找不到任何内容 function thisGenerator(){ while(1) yield this; } var gen=new thisGenerator(); alert(gen.next()==thisGenerator);

在javascript中的javascript生成器中,
this
的值是多少? 在下面的代码中,两个比较都返回false,当我执行
.toSource()
时,
这个
对象看起来是空的
对象。参考ECMA或MDN文档会很有帮助,我在这两个文档中都找不到任何内容

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

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

仍遵循正常规则。 考虑到,全局范围是
窗口

var gen = (function() { yield this; })(); gen.next() === window // true
var gen = (function() { "use strict"; yield this; })(); gen.next() === undefined // true
在怪癖模式下,未绑定函数中的
这个
将是全局范围(恰好是
窗口
),而在严格模式下它是
未定义的

PS:当调用绑定的函数时,一切仍然正常:

var o = { foo: function() { yield this; } }; o.foo().next() === o // true
var o = {}; function foo() { yield this; }; foo.call(o).next() === o // true

警报(此生成器的gen.next()实例);//是的
但是为什么它不等于
gen
?这只是一个猜测,但是我猜您的实例是用一个提供迭代器行为的特殊对象包装的。在这里找到一些信息:我以前读过,在
这个
上找不到任何东西。迭代器的情况非常清楚。