■ クラスの定義方法
例えばASだと、このような定義になると思いますが、
package{ public class MyClass{ public var myValue; //コンストラクタ public function MyClass(value1, value2){ var newValue = value1 + value2; test1(newValue); } public fucntion test1(value3){ myValue = value3; trace("myValue:", myValue); } public fucntion test2(){ } } }
—
JSではこのように書くと良いと思います。
var MyClass = function(){ this.myValue; this.initialize.apply(this, arguments); } MyClass.prototype = { //コンストラクタ initialize: function(value1, value2) { var newValue = value1 + value2; test1(newValue); }, test1: function(value3){ this.myValue = value3; console.log("myValue:", myValue); }, test2: function(){ } }
—
説明 :
・JSに変数の型指定はありません。
・この書き方をすると、関数内で定義した変数を除いて、全てpublicになります。クラス内でprivate変数はつくれません。
・イベント処理っぽいことが入って来た時にさらに掘り下げますが、14行目の「this」は必須です。
・console.logはfirebugや、WebKitのコンソールで確認。
—
■ サンプル
できるだけASっぽく、1クラス1ファイルで考えてみます。
ドキュメントクラス風にMainクラスを実行して、SampleClassクラスのインスタンスをつくり、
その中の関数を呼んで終わり。という簡単なプログラムです。
まずHTMLファイルでmain.jsを読み込む。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="main.js"></script> </head> <body> <div id="content"></div> </body> </html>
—
main.jsの中身
document.write('<script type="text/javascript" src="sampleClass.js"></script>'); onload = function(){ var main = new Main(); } //Mainクラス var Main = function(){ this.initialize.apply(this, arguments); } Main.prototype = { //コンストラクタ initialize: function() { var sampleInstance = new SampleClass("Hello World!"); sampleInstance.talk(); } }
—
sampleClass.jsの中身
//SampleClassクラス var SampleClass = function(){ this.myMessage = ""; this.initialize.apply(this, arguments); } SampleClass.prototype = { //コンストラクタ initialize: function(message) { this.myMessage = message; }, //this.myMessageを出力 talk: function(){ console.log(this.myMessage); document.getElementById("content").innerHTML = this.myMessage; } }
—
説明 :
・main.jsの1行目はASでいうimportっぽい書き方をしてみたくてやっています。
(HTMLをいじらずJSだけで完結できるので便利)
・実際はJQueryのonLoadから処理を始めて行くと色々できるようになります。(次回以降)
ダウンロード :
http://soohei.net/blog/files/js_01.zip
—
参考 :
・http://d.hatena.ne.jp/amachang/20060516/1147778600
・http://d.hatena.ne.jp/vividcode/20090706/1246905260