Object()コンストラクタとObject.create()で生成するオブジェクトなど、生成方法がいくつかあって混乱しています。下記11個の生成方法でつくったオブジェクトの理解が正しいのか、お時間のある方に見てもらえたらと思い投稿します。
function f(){return 11;} o1 =Object(f); // f f(){return 11} o2 =Object(f()); // Number(11) o3 =Object(new f); // f .. Prototype:Object o4 =Object(new f()); // f .. Prototype:Object o5 =new Object(f); // f f(){return 11} o6 =new Object(f()); // Number(11) o7 =new Object(new f); // f .. Prototype:Object o8 =new Object(new f()); // f .. Prototype:Object o9 =Object.create(f); // Function .Prototype:f f(){return 11} // o10=Object.create(f()); // Uncaught TypeError:... o11=Object.create(new f); // f .. Prototype:f o12=Object.create(new f()); // f .. Prototyoe:f // 返値 11 を表示 console.log(o1()); // o5 console.log(Number(o2)); // o6 console.log(Object.getPrototypeOf(o3).constructor()); // o4 o7 o8 console.log(Object.getPrototypeOf(o9)()); console.log(Object.getPrototypeOf(o11).constructor()); // o12
上記を見ていると、
- Object()コンストラクターでは、Object() と new Object()は、同じ働きをしている
どちらを使っても問題はない
2. o1とo5は、変数fに格納されているオブジェクトが戻され
3. o2とo6は、関数fの返り値のラッパー型が戻され
4. o3,o4,o7,o8は、PrototypeにObjectが設定されたfのオブジェクトが戻され
2~4はPrototypeにObjectが設定されたオブジェクトが戻る
- o9はf()をPrototyoeに設定した関数型が戻され
- o11とo12は、Prototypeにfのインスタンスが設定されたオブジェクトが戻されている
という理解でいいのでしょうか?
回答2件
あなたの回答
tips
プレビュー