Here you can find the source of iters()
// 'this' in a generator-expression non-strict function produces the expected // object.//from w ww. j a v a2 s . c o m Number.prototype.iters = function () { return [(this for (x of [0])), (this for (y of [0]))]; }; var [a, b] = (3).iters(); var three = a.next(); assertEq(Object.prototype.toString.call(three), '[object Number]'); assertEq(+three, 3); assertEq(b.next(), three);
"use strict"; Number.prototype.__iterator__ = function (iterKeys) { if (this % 1) { throw new TypeError("Integer expected for number iterator"); var i = 1 - iterKeys, j = this + i; if (j < 0) { i = j - i + iterKeys; ...
Number.prototype.downto = function (down, iterator) { for (var i = this.valueOf(); i >= down; i--) { iterator(i); return this.valueOf(); };
Number.prototype.upto = function (up, iterator) { for (var i = this.valueOf(); i <= up; i++) { iterator(i); return this.valueOf(); };
Number.prototype.upto = function (from) { var a = []; var to = this.valueOf(); var i = to - 1; while (i++ < from) { a.push(i); return a; }; ...
Number.prototype.upto = function (t, cb) { var i = this; if(t < this) { return +this; while (i <= t) { cb(i++); return +this; ...
Number.prototype.upto = function(t, cb) { var i = this; if(t < this) return +this; while (i <= t) { cb(i++); } return +this; };