Javascript weirdness? - Google グループ var o1 = [], f1 = function(){ return o1; }; (new f1()) === o1; // true var o2 = 1, f2 = function(){ return o2; }; (new f2()) === o2; // false これってどういうことだってばよ? という話。 例によって仕様から解説してみようかと。 new 演算子 11.2.2 The new Operator - ECMAScript Language Specification - ECMA-262 Edition 5.1 new 演算子自体は実は大したことはしていない。 対象が function であること 対象の function に [[Construct]] 内部メソッドがあること [[C