18
Kenichiro Ota @oota_ken
@t_wada 先生!TAの指標としてお聞きしたいのですが、JavaScriptでクラスを作る方法はカプセル化の観点からはクロージャーベースがよいのでしょうか?それともプロトタイプベース?
Takuto Wada @t_wada
@oota_ken そもそもなぜクラスを作りたいんですか?
Kenichiro Ota @oota_ken
@t_wada おだいだとクラスベースじゃなくて、 var hoge = { hoge : 1, hoge : function() {} }; みたいでオケってこと?
Takuto Wada @t_wada
@oota_ken クラス指向じゃなくてオブジェクト指向しようぜ
Kenichiro Ota @oota_ken
@t_wada ふむふむ。メソッドはプロトタイプチェーン?そこまでしなくてもオケ?
Takuto Wada @t_wada
@oota_ken 俺は必要になるまで使わないと思う
Kenichiro Ota @oota_ken
@t_wada var oota = {name: "oota", hello: function() { return "hello " + http://t.co/wghdD8U4;}}; こういう系でオケってこと?
Kenichiro Ota @oota_ken
@oota_ken @t_wada そもそもインスタンスベースだったら、プロトタイプなんて書き換えなくていいかw
Takuto Wada @t_wada
@oota_ken そのオブジェクトを作る関数を書けば、クロージャの中で望むカプセル化もできるよね。
Kenichiro Ota @oota_ken
@t_wada あ、そういう話です。まーでもそこまでしなくてもいいかなって思い始めました。カプセル化とかちょっとクラスベースすぎるかなとw
Takuto Wada @t_wada
@oota_ken いや、カプセル化とクラスは切り分けて考えられるでしょう。まずはクラスを作るという習慣を一度捨てよう。クラスは最初に作るものでは無くて、あとから必要に応じて抽出できるものです。そして js ではクラスがスコープを規定するのでは無くて、関数がスコープを規定する。
Kenichiro Ota @oota_ken
@t_wada ふむふむ。関数型にむしろ近い形で作った方がいい感じなのかな?最近実は自分専用スクリプトには全然クラス作ってないので、そっちの方がやりやすいかも。
Takuto Wada @t_wada
@oota_ken カプセル化や情報隠蔽は大事です。ただそれらがクラスじゃないとできないというのは(少なくとも js では)違うかなと。
Kenichiro Ota @oota_ken
@t_wada 先生!どうもクラスベースにラッピングされアットものを使っていたので、そこらへんまだJavaScriptの流儀を習得できていないので懇親会でペロペロねがいます!
Kenichiro Ota @oota_ken
@t_wada function Person(name) { return { hello: function() { return "hello " + name; }} oota = Person("oota"); oota.hello();
Takuto Wada @t_wada
@oota_ken UpperCamel な関数名はコンストラクタ風に new を付けて呼び出すことを想定しているものだけに付けましょう
Kenichiro Ota @oota_ken
@t_wada りょ、りょうかいw そこらへんからしてやばいねw どうも、本読んでから実務ではクラスベースばっかりで脳みそがとろけていたよ・・・ありがとう。
Kenichiro Ota @oota_ken
@t_wada function person(name) { return { hello: function() { return "hello " + name; }} 書き直した。関数ベースのカプセル化としてはこのレベルでOK?あ、忙しいのにすみません
Takuto Wada @t_wada
@oota_ken yes, yes. 意図が伝わって嬉しいです。まずはそのくらいの小ささからスタートだなぁ。

コメント

ログインして広告を非表示にする
ログインして広告を非表示にする