1 |
|
2 |
|
3 |
|
4 | if (!Map.prototype[Symbol.iterator]) {
|
5 | Map.prototype[Symbol.iterator] = function() {
|
6 | return this.entries();
|
7 | };
|
8 | }
|
9 | if (!Set.prototype[Symbol.iterator]) {
|
10 | Set.prototype[Symbol.iterator] = function() {
|
11 | return this.values();
|
12 | };
|
13 | }
|
14 |
|
15 | [Map, Set].forEach(function(collection) {
|
16 | if (!new collection().entries()[Symbol.iterator]) {
|
17 | var entriesMethod = collection.prototype.entries;
|
18 | collection.prototype.entries = function() {
|
19 | var iterator = entriesMethod.call(this);
|
20 | iterator[Symbol.iterator] = function() {
|
21 | return iterator;
|
22 | };
|
23 | return iterator;
|
24 | };
|
25 | }
|
26 | if (!new collection().keys()[Symbol.iterator]) {
|
27 | var keysMethod = collection.prototype.keys;
|
28 | collection.prototype.keys = function() {
|
29 | var iterator = keysMethod.call(this);
|
30 | iterator[Symbol.iterator] = function() {
|
31 | return iterator;
|
32 | };
|
33 | return iterator;
|
34 | };
|
35 | }
|
36 | if (!new collection().values()[Symbol.iterator]) {
|
37 | var valuesMethod = collection.prototype.values;
|
38 | collection.prototype.values = function() {
|
39 | var iterator = valuesMethod.call(this);
|
40 | iterator[Symbol.iterator] = function() {
|
41 | return iterator;
|
42 | };
|
43 | return iterator;
|
44 | };
|
45 | }
|
46 | });
|