Skip to content

Commit 99954c5

Browse files
committed
Added callback scope argument to Set.each and Set.iterate.
1 parent b3c40f5 commit 99954c5

1 file changed

Lines changed: 39 additions & 8 deletions

File tree

v3/src/structs/Set.js

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,29 +73,60 @@ var Set = new Class({
7373

7474

7575
// For when you know this Set will be modified during the iteration
76-
each: function (callback)
76+
each: function (callback, callbackScope)
7777
{
78+
var i;
7879
var temp = this.entries.slice();
80+
var len = temp.length;
7981

80-
for (var i = 0; i < temp.length; i++)
82+
if (callbackScope)
8183
{
82-
if (callback(temp[i]) === false)
84+
for (i = 0; i < len; i++)
8385
{
84-
break;
86+
if (callback.call(callbackScope, temp[i], i) === false)
87+
{
88+
break;
89+
}
90+
}
91+
}
92+
else
93+
{
94+
for (i = 0; i < len; i++)
95+
{
96+
if (callback(temp[i], i) === false)
97+
{
98+
break;
99+
}
85100
}
86101
}
87102

88103
return this;
89104
},
90105

91106
// For when you absolutely know this Set won't be modified during the iteration
92-
iterate: function (callback)
107+
iterate: function (callback, callbackScope)
93108
{
94-
for (var i = 0; i < this.entries.length; i++)
109+
var i;
110+
var len = this.entries.length;
111+
112+
if (callbackScope)
113+
{
114+
for (i = 0; i < len; i++)
115+
{
116+
if (callback.call(callbackScope, this.entries[i], i) === false)
117+
{
118+
break;
119+
}
120+
}
121+
}
122+
else
95123
{
96-
if (callback(this.entries[i], i) === false)
124+
for (i = 0; i < len; i++)
97125
{
98-
break;
126+
if (callback(this.entries[i], i) === false)
127+
{
128+
break;
129+
}
99130
}
100131
}
101132

0 commit comments

Comments
 (0)