// Array.of does not trigger prototype setters. // (It defines elements rather than assigning to them.) var status = "pass"; Object.defineProperty(Array.prototype, "0", {set: v => status = "FAIL 1"}); assertEq(Array.of(1)[0], 1); assertEq(status, "pass"); function Bag() {} Bag.of = Array.of; Object.defineProperty(Bag.prototype, "0", {set: v => status = "FAIL 2"}); assertEq(Bag.of(1)[0], 1); assertEq(status, "pass");