javascript生成器的值
在javascript中的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);
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
?这只是一个猜测,但是我猜您的实例是用一个提供迭代器行为的特殊对象包装的。在这里找到一些信息:我以前读过,在这个
上找不到任何东西。迭代器的情况非常清楚。