コンストラクタというものを学んだので、ハックに残しておきます。
コンストラクタとは。。。
オブジェクトを作成し、初期化する関数オブジェクト
// コンストラクタを定義する function Person(name, age) { this.name = name; this.age = age; this.getName = function() { return this.name; }; } // new キーワードをつけてインスタンスを生成する //personというオブジェクトを作成し、プロパティを初期化 var person = new Person('Daiki', 19); //プロパティやメソッドにアクセス console.log(person.age); //19 console.log(person.getName()); // Daiki
そして、プロトタイプという言葉も見かけたのでこれもハックに残しておきます。プロトタイプは、汎用性の高い関数に使ってあげるとよさそうです。
var p1 = new Person('Daiki'); var p2 = new Person('Nishikawa'); if( p1 === p2 ) { //false (オブジェクトとしては異なるもの) } if( p1.prototype === p2.prototype ) { //true (p1, p2 でプロパティが共有されている) } //より具体的な例 function Person(n){ this.name = n; } Person.prototype.city = 'Tokyo'; Person.prototype.change_city= function(c){ Person.prototype.city = c; } var p1 = new Person('Daiki'); console.log( p1.name ); //Daiki console.log( p1.city ); //Tokyo var p2 = new Person('Nishikawa'); console.log( p2.name ); //Nishikawa console.log( p2.city ); //Tokyo p2.change_city('New York'); //共有されていることを確認 console.log( p2.city ); //New York console.log( p1.city ); //New York 確かにTokyoからNewYorkに変わっている!! /* 仕組みとしては、 1.最初に p1.city を探す 2.ないので、Person.prototype.cityをさがす。 3.p2.change_city('New York');でプロパティがセットしてある! */ p1.age = 20; //共有されていないことを確認 console.log( p1.age ); //20 console.log( p2.age ); //undefined