JSがマジでわからんとです。
JSがわかんない。動くものは作れるよ。でもさ。情報設計とかモジュール化とか考えるとホントに意味不明になってくる。
JSはイベント駆動,関数型のプロトタイプ継承言語。オブジェクト指向のクラス言語の常識が微妙に通じない。その辺が本当にしんどい。
staticクラスってどうすんの?
var Class_name = function(){
//something you like
}
staticクラスってどうすんのかなぁって。Math.max()
とかあるし、出来ないことはないだろう、と思ってしらべて見ても上記みたいなんしか出てこない。これは、ただの、関数オブジェクトをグローバル変数に突っ込んだだけだよね??
まぁ分かってはいるんだけどこうなるみたいだ。なんかいまいち納得いかん。
クロージャのthisは実行時に決まる。
クラス作ってさ,コンストラクトして,クラスプロパティセットして,クロージャの生成。モジュール化とかしてると普通にそういうニーズは出てくると思うんだな。んでもさ,クラスメソドでもthisはそのクラスのインスタンスを指す、とは限らないみたいだ。
A.test
というメソドがある。これをB
クラスに渡すじゃん。んでB.test
を実行。するとtest内のthisはBを指すんよね。クラスメソドをクロージャとして他人に渡したら,OOP的なデータ構造は崩壊する。まぁ「クラス」っていう形で一塊だったものが、「関数」っていう単位でメソド毎に切り分けれるようになってるんだから、元々OOP的なデータの塊とか意識しちゃダメなんだろうけど…辛いよ…
thisが使えないもんだからクラスプロパティからクロージャ生成したいときは、とりあえず以下みたいな感じにしてる。
this.test = function(){
var param = this.param;
return function(){
return param;//thisはダメでもこれはOK見たい。
}
}
functionばっかりで気持ち悪いけど一応これは動く。クラスメソド=クロージャ、じゃなくてクラスメソド=クロージャ生成器みたいなイメージ。
JSほど独学で進めるのが怖い分野はない。なんかいろんな書き方あるしね。どのやり方、どのライブラリ、どのFWが適切なのかとかいろいろチェックしにゃならん。大変すぎる。死ぬしか無い。