> Modern [browsers] have security measures that do not allow scripts to capture values passed to constructors of a literal.
Actually, it's not security measures so much as implementing ECMAScript 5, which explicitly says that array literals must use the built-in constructor, not any override. See 11.1.4 [1], which reads:
> Let array be the result of creating a new object as if by the expression new Array() where Array is the standard built-in constructor with that name.
Object works similarly, and is in 11.1.5. I'm not certain what earlier standards said here, but I suspect they didn't say anything.
[1]: http://www.ecma-international.org/publications/files/ECMA-ST...