aboutsummaryrefslogtreecommitdiff
path: root/node_modules/core-js/modules/$.for-of.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/core-js/modules/$.for-of.js')
-rw-r--r--node_modules/core-js/modules/$.for-of.js19
1 files changed, 19 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/$.for-of.js b/node_modules/core-js/modules/$.for-of.js
new file mode 100644
index 000000000..0f2d8e974
--- /dev/null
+++ b/node_modules/core-js/modules/$.for-of.js
@@ -0,0 +1,19 @@
+var ctx = require('./$.ctx')
+ , call = require('./$.iter-call')
+ , isArrayIter = require('./$.is-array-iter')
+ , anObject = require('./$.an-object')
+ , toLength = require('./$.to-length')
+ , getIterFn = require('./core.get-iterator-method');
+module.exports = function(iterable, entries, fn, that){
+ var iterFn = getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+}; \ No newline at end of file