我知道用"new"实例化以及直接调用普通函数的区别。
但是对于生成器函数呢?
比如:
function *counter(){
let n = 0;
while (n < 2) {
yield n++;
}
return 10;
}
var countIter1 = new counter();
var countIter2 = counter();
看起来它们是相同的吗?
我知道用"new"实例化以及直接调用普通函数的区别。
但是对于生成器函数呢?
比如:
function *counter(){
let n = 0;
while (n < 2) {
yield n++;
}
return 10;
}
var countIter1 = new counter();
var countIter2 = counter();
看起来它们是相同的吗?
function Range(low, high){
this.low = low;
this.high = high;
}
Range.prototype.__iterator__ = function(){
for (var i = this.low; i <= this.high; i++)
yield i;
};
var range = new Range(3, 5);
for (var i in range)
print(i); // prints 3, then 4, then 5 in sequence
counter()
时会发生什么? - Jacob KrallGeneratorFunction
构造函数的部分中,它对于生成的函数有以下说明... "使用GeneratorFunction构造函数创建的每个函数都会自动创建一个原型属性,以提供该函数可能被用作构造函数的可能性。" 因此这不是一个完整的答案,但它确实表明它们可以正确地用作构造函数。 - cookie monster