私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.98 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
やった!やったよ (´;ω;`)
男性型脱毛症の原因はタンパク質、除去すれば再び豊かな毛髪 - Bloomberg
http://www.bloomberg.co.jp/news/123-M192I56K50ZK01.html
男性型脱毛症の原因はタンパク質、除去すれば再び豊かな毛髪 - Bloomberg
http://www.bloomberg.co.jp/news/123-M192I56K50ZK01.html
得てして、本当は何がしたいのかを簡潔に説明出来る人って
なかなかいないよね、ITに限らず
義務教育の国語でその辺をしっかりやればいいのに
なかなかいないよね、ITに限らず
義務教育の国語でその辺をしっかりやればいいのに
継承とかクラスとか、それっぽいこと書いてるけど
var Func1... の時点でもうねぇ。
var Sample = (function(){
var Func1 = {
run : function() {
alert('run');
}
}
return Func1;
});
var Sample2 = Sample();
Sample2.run();
これでいいだろ。
var Func1... の時点でもうねぇ。
var Sample = (function(){
var Func1 = {
run : function() {
alert('run');
}
}
return Func1;
});
var Sample2 = Sample();
Sample2.run();
これでいいだろ。
http://news.nicovideo.jp/watch/nw220200
こういう事件ってIE6みたいな古い環境でデータベース管理してるからこういう事起きるんだろうな。
こういう事件ってIE6みたいな古い環境でデータベース管理してるからこういう事起きるんだろうな。
板違いなわけだがニコ厨にそれ言っても無駄か
ついでに言うと環境だけのせいじゃない
例えばSQLインジェクションが発生するのは大抵フロントエンドのせいだろ
ついでに言うと環境だけのせいじゃない
例えばSQLインジェクションが発生するのは大抵フロントエンドのせいだろ
JavaScriptから入った俺としてはもうJavaScript5年やってその意味は理解できてるんだが、
擬似クラスを用いた継承をわざわざ積極的にしようとすることの有効性が未だにわからない。
狙わなくても自然とそれっぽく組んでしまうときもたまにあるけど、
普通そんな書き方よりいいというか、JavaScriptぽい素直な書き方はあるよ。
わざわざクラスっぽいのを使いたがる、クラスを使ってることにしたがる理由は何だろう?
擬似クラスを用いた継承をわざわざ積極的にしようとすることの有効性が未だにわからない。
狙わなくても自然とそれっぽく組んでしまうときもたまにあるけど、
普通そんな書き方よりいいというか、JavaScriptぽい素直な書き方はあるよ。
わざわざクラスっぽいのを使いたがる、クラスを使ってることにしたがる理由は何だろう?
>>568
簡単でいいからコード書いてみて。
簡単でいいからコード書いてみて。
移植や多言語との連携があるなら、
それらとの親和性を大事にする事だってあるんじゃないかな。
それらとの親和性を大事にする事だってあるんじゃないかな。
俺はサーバサイド(java,php)長年やって
ここ2年くらいUI側でJavaScriptだけど
UI側ではクラスは使わないな。
UI描画と入力、バリデーションを
極力シンプルにやらせてる。
サーバとのやりとりはJSONのPOSTのみ。
複雑な処理はサーバで。
ここ2年くらいUI側でJavaScriptだけど
UI側ではクラスは使わないな。
UI描画と入力、バリデーションを
極力シンプルにやらせてる。
サーバとのやりとりはJSONのPOSTのみ。
複雑な処理はサーバで。
>>569
書いてみてって?
そもそも自分が普通に書いててクラスが必要になった事がほとんどないから
そんなにJAVAっぽいクラスに凝る必要があるのか疑問なんだ
ニューラルネットワークの実験したときくらいかな、意図的にそういうクラス目指したの
書いてみてって?
そもそも自分が普通に書いててクラスが必要になった事がほとんどないから
そんなにJAVAっぽいクラスに凝る必要があるのか疑問なんだ
ニューラルネットワークの実験したときくらいかな、意図的にそういうクラス目指したの
>>572
普段書いているクラスと"JAVAっぽいクラス"の違いがよく分からないから、コードで示してほしいなと。
普段書いているクラスと"JAVAっぽいクラス"の違いがよく分からないから、コードで示してほしいなと。
え、ニュアンスが伝わらなかった?
JavaScriptにはクラスはない、継承の仕組みもない
それなのにそれらを擬似的に再現したものを、
まるで配列やオブジェクトのように元からあって
当たり前のように扱うことに凝る風習に違和感を感じるって言ってるの
クラスを作ろうと凝って擬似クラス形Aにたどり着いて、
(あたかも元から正式にJSに仕組みが整っているかのように)
ちゃんとクラスを作ったぞ!って考えるのに違和感を感じてるの
目的の事を成し遂げるためにJavaScriptの構文を組み合わせて、
それがたまたま形Aになることはあるけどねって言ってる
要はJAVAみたいな所謂『クラス』はJSにはねーよ!勘違いすんなっ!って言いたいの
JavaScriptにはクラスはない、継承の仕組みもない
それなのにそれらを擬似的に再現したものを、
まるで配列やオブジェクトのように元からあって
当たり前のように扱うことに凝る風習に違和感を感じるって言ってるの
クラスを作ろうと凝って擬似クラス形Aにたどり着いて、
(あたかも元から正式にJSに仕組みが整っているかのように)
ちゃんとクラスを作ったぞ!って考えるのに違和感を感じてるの
目的の事を成し遂げるためにJavaScriptの構文を組み合わせて、
それがたまたま形Aになることはあるけどねって言ってる
要はJAVAみたいな所謂『クラス』はJSにはねーよ!勘違いすんなっ!って言いたいの
>>574
大規模開発の経験が無いんじゃないかな。
大規模開発の経験が無いんじゃないかな。
大規模って言えるものは無いかな?あるかな?
開発に15人くらいのプログラマが関わるのが大規模って言うならならあるんだけど
クラス?
一人もそんな言葉自分から言い出した奴は多分いなかったね
俺主導で俺がJS教えた奴らばかりだったからかもだけど?
まあそれがニューラルネットワクの話でクラス使うんだけどね
開発に15人くらいのプログラマが関わるのが大規模って言うならならあるんだけど
クラス?
一人もそんな言葉自分から言い出した奴は多分いなかったね
俺主導で俺がJS教えた奴らばかりだったからかもだけど?
まあそれがニューラルネットワクの話でクラス使うんだけどね
>>576
ある程度の規模になってくると足並みを揃えることが大切だよね。
そういう意味では576は自分が主導する立場に立つことで足並みを揃えられた訳だけど、
世界一般で考えると、やっぱりクラスベースなんだよね。オブジェクト指向の支えもあってね。
"凝った"と批判するけども、サイ本に紹介されるようなクラス定義であれば特別凝った方法だとは思わないし、
それで開発の基盤を築けるならもう使うしか無いよね。たとえばドキュメントなんかもそう。ある程度はっきりとした
"クラスとはなにか”が定義されていないと、今のようなウェブアプリ開発なんてやっていけない。
書き込みを読んでていても、いまいちJSのクラスを批判する理由が分からない。
ある程度の規模になってくると足並みを揃えることが大切だよね。
そういう意味では576は自分が主導する立場に立つことで足並みを揃えられた訳だけど、
世界一般で考えると、やっぱりクラスベースなんだよね。オブジェクト指向の支えもあってね。
"凝った"と批判するけども、サイ本に紹介されるようなクラス定義であれば特別凝った方法だとは思わないし、
それで開発の基盤を築けるならもう使うしか無いよね。たとえばドキュメントなんかもそう。ある程度はっきりとした
"クラスとはなにか”が定義されていないと、今のようなウェブアプリ開発なんてやっていけない。
書き込みを読んでていても、いまいちJSのクラスを批判する理由が分からない。
ああ悪かったprototypeを使ったやり方にケチ付けてるんじゃ無いんだ
だがそれは元々言語仕様としてクラスからそれ繋がりで継承が抜群に定義されてる言語でいうクラスとは違う
見せかけのクラスだ、もちろんそれを分かって使うのは素晴らしいことだ
だがそれは元々言語仕様としてクラスからそれ繋がりで継承が抜群に定義されてる言語でいうクラスとは違う
見せかけのクラスだ、もちろんそれを分かって使うのは素晴らしいことだ
それが「見せかけのクラス」だっていう考え方がそもそも違うな
JSでOOPするにはこうしますっていうJSなりの自然なやり方を
お前みたいなアンポンタンにも分かりやすく教えるために
「つまりこれはクラスみたいなもんですよね」って言ってるだけだ
JSでOOPするにはこうしますっていうJSなりの自然なやり方を
お前みたいなアンポンタンにも分かりやすく教えるために
「つまりこれはクラスみたいなもんですよね」って言ってるだけだ
だからクラスみたいなものと思うのは良いっすよ
だってクラスみたいなものなのは間違いないじゃない
つうか構造上は実質クラスだし?いやクラスだから
そういう事じゃなくて…………
JSにはクラスという機構があるみたいに思ってそれに凝る風習があるのに違和感感じてるんですよ
だってクラスみたいなものなのは間違いないじゃない
つうか構造上は実質クラスだし?いやクラスだから
そういう事じゃなくて…………
JSにはクラスという機構があるみたいに思ってそれに凝る風習があるのに違和感感じてるんですよ
JavaScriptがLISPやScheme系の言語でC++やJavaとは違うってことを受け入れられずに
C++やJavaのようなクラス継承を実現しようと腐心してJavaScriptはクソ言語だと...(省略)
C++やJavaのようなクラス継承を実現しようと腐心してJavaScriptはクソ言語だと...(省略)
>>582
ややこしいからprototype.jsなしで説明するが
function A(name){ this.item = name; }
A.prototype.udon = function(){ alert("好きなうどんは"+this.item); };
function B(name){ this.item = name; }
B.prototype = new A(); // ここで継承
B.prototype.soba = function(){ alert("好きなそばは"+this.item); };
var b = new B("きつね");
b.udon(); // 継承したからメソッドudonが使える
この継承と、定義したudonを余所から使うことは全く別次元の話で
A.prototype.udon.apply(thisとして扱いたいオブジェクト,引数配列);
てすれば、クラスも継承も関係なく使える
もちろん他のクラスのメソッド中でも構わない
ややこしいからprototype.jsなしで説明するが
function A(name){ this.item = name; }
A.prototype.udon = function(){ alert("好きなうどんは"+this.item); };
function B(name){ this.item = name; }
B.prototype = new A(); // ここで継承
B.prototype.soba = function(){ alert("好きなそばは"+this.item); };
var b = new B("きつね");
b.udon(); // 継承したからメソッドudonが使える
この継承と、定義したudonを余所から使うことは全く別次元の話で
A.prototype.udon.apply(thisとして扱いたいオブジェクト,引数配列);
てすれば、クラスも継承も関係なく使える
もちろん他のクラスのメソッド中でも構わない
>>582
だからさ、「継承」なんてもっともらしいこと書くから
prototypeうんぬんのレスがわんさか出てくるのよ。さっぱりわからんだろ。
わけもわからず「継承」なんて持ち出すなってこと。
「継承って何?」て話なら別だけど、var Func1 をよそで使いたいって話だろ?違うのか?
var Sample2 = Sample();
Sample2.alert_run = function() {
this.run();
};
Sample2.alert_run();
「新しく定義したい Sample2.alert_run の中でrunを走らせる」でいいなら、なんとでもできるだろ。
だからさ、「継承」なんてもっともらしいこと書くから
prototypeうんぬんのレスがわんさか出てくるのよ。さっぱりわからんだろ。
わけもわからず「継承」なんて持ち出すなってこと。
「継承って何?」て話なら別だけど、var Func1 をよそで使いたいって話だろ?違うのか?
var Sample2 = Sample();
Sample2.alert_run = function() {
this.run();
};
Sample2.alert_run();
「新しく定義したい Sample2.alert_run の中でrunを走らせる」でいいなら、なんとでもできるだろ。
>>582
Sampleの定義部とSample2の定義部とを一ヶ所にまとめて書いていいなら、こんな感じかなあ。
横長でごめん。
var Sample, Sample2;
(function enclosure() { // Func1をローカルに隠す関数。説明のためだけに名づけていて、無名関数でも可
var Func1 = {
run: function () { alert("run"); }
}; // 関数enclosure内で作られる関数(Sample, Sample2のインスタンスのメソッド)を介してのみ呼べる
Sample = function () {}; // コンストラクタ グローバル変数Sampleにローカル関数への参照を入れている
Sample.prototype.runOnce = function () { Func1.run(); };
Sample2 = function () {}; // コンストラクタ
Sample2.prototype = new Sample(); // ※1
/* 継承。Sample2のインスタンスでメソッドrunOnceを呼ぶと、
※1で作られるSampleのインスタンスの、メソッドrunOnceが替わりに呼ばれる(委譲?) */
Sample2.prototype.runTwice = function () { Func1.run(); Func1.run(); }; // 2回呼ぶメソッドを追加
})();
/* 関数enclosureの定義部が終わってすぐに呼び出している
これ以降で直接 Func1.run(); と呼ぶことはできない
Func1.run を呼ぶメソッドをさらに追加することも、これ以降はできない */
var s = new Sample2();
s.runTwice(); // Func1.run が2回呼ばれる
Sampleの定義部とSample2の定義部とを一ヶ所にまとめて書いていいなら、こんな感じかなあ。
横長でごめん。
var Sample, Sample2;
(function enclosure() { // Func1をローカルに隠す関数。説明のためだけに名づけていて、無名関数でも可
var Func1 = {
run: function () { alert("run"); }
}; // 関数enclosure内で作られる関数(Sample, Sample2のインスタンスのメソッド)を介してのみ呼べる
Sample = function () {}; // コンストラクタ グローバル変数Sampleにローカル関数への参照を入れている
Sample.prototype.runOnce = function () { Func1.run(); };
Sample2 = function () {}; // コンストラクタ
Sample2.prototype = new Sample(); // ※1
/* 継承。Sample2のインスタンスでメソッドrunOnceを呼ぶと、
※1で作られるSampleのインスタンスの、メソッドrunOnceが替わりに呼ばれる(委譲?) */
Sample2.prototype.runTwice = function () { Func1.run(); Func1.run(); }; // 2回呼ぶメソッドを追加
})();
/* 関数enclosureの定義部が終わってすぐに呼び出している
これ以降で直接 Func1.run(); と呼ぶことはできない
Func1.run を呼ぶメソッドをさらに追加することも、これ以降はできない */
var s = new Sample2();
s.runTwice(); // Func1.run が2回呼ばれる
590の続き。Sampleの定義部とSample2の定義部とを離して書きたいなら、
Func1を見えるところに出すしかない。
下の※2のようにSampleにぶら下げておくのが一般的かと思います。
function Sample() {}; // コンストラクタ この場合は関数定義文でもOK
Sample.prototype.runOnce = function () { Sample.Func1.run(); };
Sample.Func1 = {
run: function () { alert("run"); }
}; // ※2
function Sample2() {}; // コンストラクタ
Sample2.prototype = new Sample();
// 継承。「※2でSampleにぶら下げたFunc1がSample2にもぶら下がる」ということには「ならない」ことに注意
Sample2.prototype.runTwice = function () { Sample.Func1.run(); Sample.Func1.run(); };
var s = new Sample2();
s.runTwice();
/* ここで直接 Sample.Func1.run(); と呼ぶことができるし
Sample.Func1.runを呼び出すメソッドをさらに追加することもできる
Sample.Func1.run 自体を書き換えることでrunOnceの動作も変わることに注意 */
Func1を見えるところに出すしかない。
下の※2のようにSampleにぶら下げておくのが一般的かと思います。
function Sample() {}; // コンストラクタ この場合は関数定義文でもOK
Sample.prototype.runOnce = function () { Sample.Func1.run(); };
Sample.Func1 = {
run: function () { alert("run"); }
}; // ※2
function Sample2() {}; // コンストラクタ
Sample2.prototype = new Sample();
// 継承。「※2でSampleにぶら下げたFunc1がSample2にもぶら下がる」ということには「ならない」ことに注意
Sample2.prototype.runTwice = function () { Sample.Func1.run(); Sample.Func1.run(); };
var s = new Sample2();
s.runTwice();
/* ここで直接 Sample.Func1.run(); と呼ぶことができるし
Sample.Func1.runを呼び出すメソッドをさらに追加することもできる
Sample.Func1.run 自体を書き換えることでrunOnceの動作も変わることに注意 */
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.95 + (1001) - [97%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.96 + (1001) - [97%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.78 + (1001) - [97%] - 2010/6/25 3:53
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.93 + (1001) - [97%] - 2012/1/1 4:46
- + JavaScript の質問用スレッド vol.93 + (1001) - [97%] - 2011/12/10 18:31
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.128 + (1001) - [95%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.118 + (1002) - [95%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.138 + (1004) - [95%] - 2019/4/20 23:45
- + JavaScript の質問用スレッド vol.108 + (1001) - [95%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.89 + (1001) - [95%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.87 + (1001) - [95%] - 2011/6/21 6:33
トップメニューへ / →のくす牧場書庫について