Index: src/array-iterator.js |
diff --git a/src/array-iterator.js b/src/array-iterator.js |
index f04d6c974a4d41ea27347afde466ec1166e38d31..796ee064eb918865259a2d9a77b49c378b7a048c 100644 |
--- a/src/array-iterator.js |
+++ b/src/array-iterator.js |
@@ -10,9 +10,11 @@ |
// var $Array = global.Array; |
-var arrayIteratorObjectSymbol = GLOBAL_PRIVATE("ArrayIterator#object"); |
-var arrayIteratorNextIndexSymbol = GLOBAL_PRIVATE("ArrayIterator#next"); |
-var arrayIterationKindSymbol = GLOBAL_PRIVATE("ArrayIterator#kind"); |
+var arrayIteratorObjectSymbol = GLOBAL_PRIVATE_OWN("ArrayIterator#object"); |
+var arrayIteratorNextIndexSymbol = GLOBAL_PRIVATE_OWN("ArrayIterator#next"); |
+var arrayIterationKindSymbol = GLOBAL_PRIVATE_OWN("ArrayIterator#kind"); |
+ |
+var arrayEndOfIterationMarker = new $Object(); |
function ArrayIterator() {} |
@@ -50,13 +52,13 @@ function ArrayIteratorIterator() { |
function ArrayIteratorNext() { |
var iterator = ToObject(this); |
- if (!HAS_PRIVATE(iterator, arrayIteratorObjectSymbol)) { |
+ if (!HAS_DEFINED_PRIVATE(iterator, arrayIteratorObjectSymbol)) { |
throw MakeTypeError('incompatible_method_receiver', |
['Array Iterator.prototype.next']); |
} |
var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); |
- if (IS_UNDEFINED(array)) { |
+ if (array === arrayEndOfIterationMarker) { |
return CreateIteratorResultObject(UNDEFINED, true); |
} |
@@ -67,7 +69,7 @@ function ArrayIteratorNext() { |
// "sparse" is never used. |
if (index >= length) { |
- SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED); |
+ SET_PRIVATE(iterator, arrayIteratorObjectSymbol, arrayEndOfIterationMarker); |
return CreateIteratorResultObject(UNDEFINED, true); |
} |