落ちてくだけのゲーム

30過ぎると踊っても笑っても勝てないことに気付く

javascriptのプロパティってなんだろう

javascriptのプロパティがよくわからない・・・

  • 簡潔にいうとプロパティはコンストラクトしたオブジェクトのものにしか付かない。
  • newを使ってコンストラクトできるのは関数(function())のみ
  • オブジェクトは宣言と同時にコンストラクトされる。
  • 関数で定義したプロパティを継承させたかったら.protptypeプロパティで作っとけ。
  • thisはコンストラクタの生成元のオブジェクトが持つ
// オブジェクト
var obj = {}
obj.hoge = "hoge!";
console.log(Object.getOwnPropertyNames(obj));//hogeがおる。
 
var obj2 = obj;
console.log(Object.getOwnPropertyNames(obj2));//ただの参照だからhogeがおる。
 
// var obj3 = new obj; //obj is not a constructor 関数でないとnewできない
 
// 関数
var funcObj = function(){} //functionクラスをインスタンスしている
funcObj.hoge = "hoge!!";
console.log(Object.getOwnPropertyNames(funcObj));
/*hogeとfunctionのインスタンスプロパティ群がおる。*/
 
var funcObj2 = funcObj;
console.log(Object.getOwnPropertyNames(funcObj2));
//ただの参照なので、hogeとfunctionのプロパティ群がおる。
 
var funcObj3 = new funcObj();
console.log(Object.getOwnPropertyNames(funcObj3));
/*プロパティは継承されずコンストラクトされたオブジェクトのみになるため
新たなオブジェクトfuncObj3には何もない*/
 
/*ちなみにfuncObj3はfuncObjをコンストラクトしているが、
ただのオブジェクト扱いになる。
(Funcitonって書いてないから当たり前なんだけどね。)*/
console.log(funcObj); //function funcObj()
console.log(funcObj2); //function funcObj()
console.log(funcObj3);//Object { }
//funcObj3.prototype.hogepro3 = "hogepro3!!"; //もちろんプロトタイプもできない。
 
/*プロパティは継承されないがプロトタイプはちゃんと継承される */
funcObj.prototype.hogepro = "hogepro!!";
 
console.log(funcObj3.hoge); //undefined
console.log(funcObj3.hogepro);//hogepro!!