javascriptのオブジェクトの生成方法など
なんでJSってこんなやっこいんだろ・・・
最初はみんな同じようなものかと思ったんだけどね!
sm1={};
sm2=new Object(sm1);
sm3=new Object(); sm3.prototype=sm1;
sm4=Object.create(sm1);
sm5=function(){}
sm6=new sm5();
sm7=new Object(sm5());
sm8=new Object(new sm5());
sm9=new Object(); sm9.prototype=new sm5();
sm0=Object.create(new sm5());
console.log(Object.getPrototypeOf(sm1)); // {constructor: ƒ, __defineGetter__:...
console.log(Object.getPrototypeOf(sm2)); // {constructor: ƒ, __defineGetter__:...
console.log(Object.getPrototypeOf(sm3)); // {constructor: ƒ, __defineGetter__:...
console.log(Object.getPrototypeOf(sm4)); // {}
console.log(Object.getPrototypeOf(sm5)); // ƒ () { [native code] }
console.log(Object.getPrototypeOf(sm6)); // {constructor: ƒ}
console.log(Object.getPrototypeOf(sm7)); // {constructor: ƒ}
console.log(Object.getPrototypeOf(sm8)); // {constructor: ƒ, __defineGetter__:...
console.log(Object.getPrototypeOf(sm9)); // sm5 {}
console.log(sm1); // {} \ __proto__: \ constructor:f Object()
console.log(sm2); // {} \ __proto__: \ constructor:f Object()
console.log(sm3); // {prototype: {…}} \ prototype \ __proto__ \ constructor:f Object()
console.log(sm4); // {} \ __proto__ \ __proto__ \ constructor:f Object()
console.log(sm5); // f(){}
console.log(sm6); // sm5{} \ __proto__ \ constructor:f() || constructor:f Object()
console.log(sm7); // {} \ __proto__ \ constructor:f Object()
console.log(sm8); // {prototype: sm5} \ prototype:sm5() || constructor:f()
console.log(sm9); // {} \ __proto__ \ constructor:f Object()
console.log(sm0); // sm5{} \ __proto__ \ sm5 \ __proto__ \ constructor:f()
console.log(sm1===sm2); // true
console.log(sm1===sm3); // false
console.log(sm1===sm4); // false
console.log(sm2===sm3); // false
console.log(sm2===sm4); // false
console.log(sm3===sm4); // false
console.log(sm5===sm6); // false
console.log(sm5===sm7); // false
console.log(sm5===sm8); // false
console.log(sm5===sm9); // false
console.log(sm5===sm0); // false
console.log(sm6===sm7); // false
console.log(sm6===sm8); // false
console.log(sm6===sm9); // false
console.log(sm6===sm0); // false
console.log(sm7===sm8); // false
console.log(sm7===sm9); // false
console.log(sm7===sm0); // false
console.log(sm8===sm9); // false
console.log(sm8===sm0); // false
console.log(sm9===sm0); // false