I'm not a JavaScript guy, but based on my experience with other languages (C++, Java, Scala), I would never, ever expect the creation of an iterator to cause a copy to be made of the data structure. I would very decidedly and definitely expect it to be an O(1) operation involving no copying at all.

If there actually exists a cultural norm in the JavaScript world that JavaScript iterators typically work some other way, then fine. But unless we're sure such a norm exists, it seems dubious to me to violate the broader norm in programming generally.