[過去ログ] + JavaScript の質問用スレッド vol.84 + (1001レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
421(2): 2011/03/10(木)21:40 ID:??? AAS
>>420
var MyClass = function(){
this.privateMethod = function(){}; // プライベートメソッド
};
422: 2011/03/10(木)21:43 ID:??? AAS
>>421
プライベートメソッドと言いつつ丸見えな件について
423: 410 2011/03/10(木)21:54 ID:??? AAS
>>417
できました!
すれ汚し失礼しました。
424(1): 2011/03/10(木)21:58 ID:??? AAS
>>420
jsにはprivate修飾子なんてないから規約で決めるのが一番いいと思うね
this._method = function(){〜};
this._var = "hello";
プライベートには_を付けるというコーディング規約がある(PHPのzendとかいろいろ)
外部リンク[html]:framework.zend.com
425(2): 2011/03/10(木)22:04 ID:??? AAS
>>420
var MyClass = function(){
function privateMethod (){}
this.publicMethod = function publicMethod () { privateMethod.call(this); }:
};
426: 2011/03/10(木)22:06 ID:eJR+lZ3V(2/5) AAS
>>424
ということは、javascriptでプライベートメソッドをエミュレートするときの慣習というか、常識となっている方法は名前規約なのですね。
回答ありがとうございました。
427: 2011/03/10(木)22:08 ID:??? AAS
>>421 >>425
これ動くのか?
428: 2011/03/10(木)22:08 ID:??? AAS
privateにしようとしてソースコードまでプライベートにしたら意味がない
429(1): 2011/03/10(木)22:15 ID:eJR+lZ3V(3/5) AAS
>>425
リロードせずに見落としていました。こういうことですよね?
function MyClass (){
var privateMethod = function(){
alert('hoge');
};
this.publicMethod = function () {privateMethod.call(this);}
};
その方法はたしかに読みやすくプログラミングしやすいと思うのですが、そのメソッドはインスタンスごとに生成されてしまわないでしょうか。
メモリの観点からみるとprototypeを使って>>420よりも読みやすい方法があるといいのですが……。
430: 2011/03/10(木)22:19 ID:??? AAS
JavaScriptはクラスベースじゃありますん
431(2): 2011/03/10(木)22:41 ID:??? AAS
>>429
privateMethod を共有していいのなら、privateMethod を外に出せばいい。
function MyClass (hoge){ this.hoge = hoge; return this; }
(function () {
function privateMethod (){ alert(this.hoge); }
MyClass.prototype.publicMethod = function publicMethod () { privateMethod.call(this); };
})();
new MyClass('foo').publicMethod();
432: 2011/03/10(木)23:17 ID:eJR+lZ3V(4/5) AAS
>>431
なるほど!Callオブジェクトの中に閉じ込めるんですね!
そんな使い方ができるなんて……とても勉強になります。
ところで、そのコードで1点わからないところがあります。
MyClassで自身を返している(return this)のはなぜなのでしょうか?
削ってみても動くようなのですが、どんな意図があるのでしょうか。
433(1): 2011/03/10(木)23:30 ID:??? AAS
new MyClass().methodA().methodB()な使い方をしたいんじゃない?
434(1): 2011/03/10(木)23:33 ID:??? AAS
どう読んだらそうなるんだよww
435: 2011/03/10(木)23:39 ID:eJR+lZ3V(5/5) AAS
>>433
言いたいことはわかります。
jQueryによくある感じで、ドットでメソッドをつなげていくことを意識したのでしょうか。
ともかく回答してくださった方々、どうもありがとうございました!
436: 2011/03/10(木)23:59 ID:??? AAS
2000年頃に流行ったreturn thisは
VisualBasic畑のよくわかってない外人がmsdnのコラムで書いていたのが
コピペで広まったもの
437: 2011/03/11(金)00:02 ID:??? AAS
プライベートはグローバル変数と同じ、気にし過ぎる方がどうかしている
どうしてもやりたきゃ適当なインスタンスを隠蔽してそいつに委譲しろ
つーかそれを自動でやるのがprototypeなんだがな
438(1): 2011/03/11(金)00:14 ID:??? AAS
javascriptでprivateはいらないな…
constは欲しいけど
439(2): 2011/03/11(金)00:23 ID:??? AAS
>>434
Test = function(){
this.hello = function(){
alert("hello");
return this;
}
this.world = function(){
alert("world");
return this;
}
省3
440(1): 2011/03/11(金)00:58 ID:??? AAS
JavaScriptでJavaみたいな書き方をする必要がないしそういうふうにできてない
他言語から来た人はもっと柔軟性をもたないと
とくにオブジェクト指向といってもクラスベースとプロトタイプベースでは
根本的な概念が違うしクラスにこだわらずプロトタイプでの実装を学ぶべき
上下前次1-新書関写板覧索設栞歴
あと 561 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.141s*