オブジェクトは理解できましたか?
今後いろんなところで使いますので、しっかり理解しておいてください。
重要なのはプロパティとメソッドです!そして参照です。
もし不安がある場合は復習しておいてくださいね。
ちなみに今回から実施するのはコンストラクタです。
こちらも今後enchant.jsでゲームを作っていく中で沢山出てくるので
オブジェクトと合わせて理解してください。
それでは初めていきます。
コンストラクタとは
コンストラクタというのはオブジェクトを作る型みたいなイメージです。
みんなクッキー作ったことありますよね。私は作ったことないですけど。
そのとき銀色のなんか星型の金属のやつで形くり抜きますよね。
あれがコンストラクタです。あくまでイメージですね。
ちなみに前回作ったCarオブジェクトは手動で色々なプロパティと
メソッドを追加していきました。いわばハンドメイドって奴です。
一点もの。オブジェクトはこの作り方でも問題ないのですが、
部分的に変えたいとか同じものをたくさん作りたいとかそういう
場合はハンドメイドは面倒です。
型があれば簡単に作れちゃいますね。それがコンストラクタの役割です。
じゃあコンストラクタってプログラミング的には何か。
実は今まで作ってきた「関数」は使い方を次第でコンストラクタになります。
これは実際やってみたほうがいいですね。
では車のコンストラクタを作ってみましょう
1 2 3 |
function Car(make){ this.make = make; } |
はいできた、できました。
普通の関数。
今まで私達が作ってきたのは関数でもありコンストラクタにもなります。
thisはコンストラクタで作られたオブジェクトを指します。(詳細は別途!)
Carオブジェクトのmake変数ということです。
こーんな使い方します。
1 2 3 4 5 |
function Car(make){ this.make = make; } CarInstance = new Car('Toyota'); |
これを実行すると何が起こるか。
通常の関数だと実行されて終わりですね。
でもnewをつけて実行すると。。。。実行してみましょう。
オブジェクトができてますね! CarInstanceオブジェクト。
そしてmakeのプロパティ持ってますね。ちなみにコンストラクタから生成されたオブジェクトを
インスタンスと呼びますので覚えてくださいね。
コンストラクタがあればnewすることで沢山車が作れるってことです。
便利。
先ほど、作成したコンストラクタはプロパティしかないので、
メソッドもコンストラクタに入れてみましょう。
1 2 3 4 5 6 7 8 9 10 |
function Car(make){ this.make = make; this.ondo = 0; this.aircon = function(ond){ this.ondo = ond; alert('温度を'+ond+'設定しました'); } } CarInstance = new Car('Toyota'); |
できました。
実行もしてみました。
プロパティ、メソッド追加しましたね。
これがコンストラクタ!
まとめ
- 関数をnewして実行することでオブジェクトを作成することができる。
- オブジェクトを作成(初期化)する関数をコンストラクタと呼ぶ
- コンストラクタからnewしてできたオブジェクトをインスタンスという
前回の課題で手動で作成してもらった自動販売機オブジェクトのコンストラクタを作成して、インスタンスを作って実行してみてください。
- コンストラクタ名:jidouhanbaiki
- プロパティ:count(売れた回数を保持)
- メソッド:sell:(入力された金額が120以上なら「売れた」と表示)
今後code.9leapでゲームを実行していきます。
実際にcode.9leapに登録して遊んでみてください。
http://code.9leap.net/