function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } for (var i = 0; i < 10; ++i) { Object.defineProperty(Array.prototype, i, { get() { throw new Error('get is called.'); }, set(value) { throw new Error('set is called.'); } }); } var original = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // Doesn't throw any errors. var generated = Array.from(original); shouldBe(generated.length, 10); for (var i = 0; i < 10; ++i) { shouldBe(generated[i], i); }