のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,837人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.98 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    551 : Name_Not - 2012/03/22(木) 09:40:13.91 ID:??? (+47,+19,-41)
    やった!やったよ (´;ω;`)

    男性型脱毛症の原因はタンパク質、除去すれば再び豊かな毛髪 - Bloomberg
    http://www.bloomberg.co.jp/news/123-M192I56K50ZK01.html
    552 : Name_Not - 2012/03/22(木) 13:03:05.06 ID:??? (+68,+26,-46)
    >>543
    処理内容によっては必要ないデータをスクリプト外に出したいって話なら
    jsonやjsonp、あるいはXMLにすればいい
    ただし非同期な処理になるのでそこらへんは考慮すること
    553 : Name_Not - 2012/03/22(木) 13:04:01.56 ID:??? (+50,+29,-6)
    にしてもお前ら要件定義下手糞だな
    554 : Name_Not - 2012/03/22(木) 13:43:15.49 ID:??? (+52,+29,-2)
    質問も下手すぎだろ
    555 : Name_Not - 2012/03/22(木) 13:49:18.60 ID:iBo2DReU (-20,+29,-28)
    得てして、本当は何がしたいのかを簡潔に説明出来る人って
    なかなかいないよね、ITに限らず
    義務教育の国語でその辺をしっかりやればいいのに
    557 : Name_Not - 2012/03/22(木) 22:56:08.50 ID:??? (-6,-29,-14)
    Sampleの値確認しろ。
    559 : Name_Not - 2012/03/22(木) 23:14:05.08 ID:??? (-29,-30,-186)
    継承とかクラスとか、それっぽいこと書いてるけど

    var Func1... の時点でもうねぇ。

    var Sample = (function(){
    var Func1 = {
    run : function() {
    alert('run');
    }
    }
    return Func1;
    });

    var Sample2 = Sample();
    Sample2.run();

    これでいいだろ。
    562 : Name_Not - 2012/03/23(金) 04:52:44.90 ID:??? (+0,+21,-9)
    http://news.nicovideo.jp/watch/nw220200
    こういう事件ってIE6みたいな古い環境でデータベース管理してるからこういう事起きるんだろうな。
    563 : Name_Not - 2012/03/23(金) 05:28:53.75 ID:??? (+57,+29,-19)
    板違いなわけだがニコ厨にそれ言っても無駄か
    ついでに言うと環境だけのせいじゃない
    例えばSQLインジェクションが発生するのは大抵フロントエンドのせいだろ
    564 : Name_Not - 2012/03/23(金) 07:13:26.54 ID:??? (+63,+30,-98)
    JavaScriptから入った俺としてはもうJavaScript5年やってその意味は理解できてるんだが、
    擬似クラスを用いた継承をわざわざ積極的にしようとすることの有効性が未だにわからない。

    狙わなくても自然とそれっぽく組んでしまうときもたまにあるけど、
    普通そんな書き方よりいいというか、JavaScriptぽい素直な書き方はあるよ。

    わざわざクラスっぽいのを使いたがる、クラスを使ってることにしたがる理由は何だろう?
    565 : Name_Not - 2012/03/23(金) 07:46:16.85 ID:nsoPDskq (+19,+28,-22)
    >>569
    javascriptっぽいってなに?
    疑似クラスを用いた継承ってのもjavascriptに包含されてる機能じゃないの?
    566 : Name_Not - 2012/03/23(金) 08:00:17.91 ID:??? (+57,+29,-20)
    俺が理解できないものは素直な書き方じゃないって言いたいのだろう。
    567 : Name_Not - 2012/03/23(金) 08:00:29.62 ID:??? (+57,+29,-20)
    俺が理解できないものは素直な書き方じゃないって言いたいのだろう。
    568 : Name_Not - 2012/03/23(金) 08:20:31.30 ID:??? (+89,+29,-14)
    >>565
    その通り何だけど実際そうじゃないじゃん?
    JAVAみたいなクラスを実現することに凝る人が多いことに違和感を感じてるってこと
    569 : Name_Not - 2012/03/23(金) 08:44:32.37 ID:??? (+97,+26,-2)
    >>568
    簡単でいいからコード書いてみて。
    570 : Name_Not - 2012/03/23(金) 08:47:06.33 ID:??? (+57,+29,-27)
    移植や多言語との連携があるなら、
    それらとの親和性を大事にする事だってあるんじゃないかな。
    571 : Name_Not - 2012/03/23(金) 08:50:52.47 ID:??? (+3,-29,-104)
    俺はサーバサイド(java,php)長年やって
    ここ2年くらいUI側でJavaScriptだけど
    UI側ではクラスは使わないな。
    UI描画と入力、バリデーションを
    極力シンプルにやらせてる。
    サーバとのやりとりはJSONのPOSTのみ。
    複雑な処理はサーバで。
    572 : Name_Not - 2012/03/23(金) 08:59:37.08 ID:??? (+99,+30,-42)
    >>569
    書いてみてって?
    そもそも自分が普通に書いててクラスが必要になった事がほとんどないから
    そんなにJAVAっぽいクラスに凝る必要があるのか疑問なんだ
    ニューラルネットワークの実験したときくらいかな、意図的にそういうクラス目指したの
    573 : Name_Not - 2012/03/23(金) 09:13:43.76 ID:??? (+50,+8,-24)
    >>572
    普段書いているクラスと"JAVAっぽいクラス"の違いがよく分からないから、コードで示してほしいなと。
    574 : Name_Not - 2012/03/23(金) 09:24:53.25 ID:??? (+64,+30,-151)
    え、ニュアンスが伝わらなかった?
    JavaScriptにはクラスはない、継承の仕組みもない
    それなのにそれらを擬似的に再現したものを、
    まるで配列やオブジェクトのように元からあって
    当たり前のように扱うことに凝る風習に違和感を感じるって言ってるの
    クラスを作ろうと凝って擬似クラス形Aにたどり着いて、
    (あたかも元から正式にJSに仕組みが整っているかのように)
    ちゃんとクラスを作ったぞ!って考えるのに違和感を感じてるの
    目的の事を成し遂げるためにJavaScriptの構文を組み合わせて、
    それがたまたま形Aになることはあるけどねって言ってる
    要はJAVAみたいな所謂『クラス』はJSにはねーよ!勘違いすんなっ!って言いたいの
    575 : Name_Not - 2012/03/23(金) 09:38:21.43 ID:??? (+70,+29,-7)
    >>574
    大規模開発の経験が無いんじゃないかな。
    576 : Name_Not - 2012/03/23(金) 09:51:22.76 ID:??? (+99,+30,-88)
    大規模って言えるものは無いかな?あるかな?
    開発に15人くらいのプログラマが関わるのが大規模って言うならならあるんだけど
    クラス?
    一人もそんな言葉自分から言い出した奴は多分いなかったね
    俺主導で俺がJS教えた奴らばかりだったからかもだけど?
    まあそれがニューラルネットワクの話でクラス使うんだけどね
    577 : Name_Not - 2012/03/23(金) 10:12:41.28 ID:??? (+76,+30,-185)
    >>576
    ある程度の規模になってくると足並みを揃えることが大切だよね。
    そういう意味では576は自分が主導する立場に立つことで足並みを揃えられた訳だけど、
    世界一般で考えると、やっぱりクラスベースなんだよね。オブジェクト指向の支えもあってね。

    "凝った"と批判するけども、サイ本に紹介されるようなクラス定義であれば特別凝った方法だとは思わないし、
    それで開発の基盤を築けるならもう使うしか無いよね。たとえばドキュメントなんかもそう。ある程度はっきりとした
    "クラスとはなにか”が定義されていないと、今のようなウェブアプリ開発なんてやっていけない。

    書き込みを読んでていても、いまいちJSのクラスを批判する理由が分からない。
    579 : Name_Not - 2012/03/23(金) 10:22:47.22 ID:??? (+63,+30,-80)
    ああ悪かったprototypeを使ったやり方にケチ付けてるんじゃ無いんだ
    だがそれは元々言語仕様としてクラスからそれ繋がりで継承が抜群に定義されてる言語でいうクラスとは違う
    見せかけのクラスだ、もちろんそれを分かって使うのは素晴らしいことだ
    580 : Name_Not - 2012/03/23(金) 10:37:46.51 ID:??? (+63,+30,-39)
    それが「見せかけのクラス」だっていう考え方がそもそも違うな
    JSでOOPするにはこうしますっていうJSなりの自然なやり方を
    お前みたいなアンポンタンにも分かりやすく教えるために
    「つまりこれはクラスみたいなもんですよね」って言ってるだけだ
    581 : Name_Not - 2012/03/23(金) 10:45:21.60 ID:??? (+63,+30,-55)
    だからクラスみたいなものと思うのは良いっすよ
    だってクラスみたいなものなのは間違いないじゃない
    つうか構造上は実質クラスだし?いやクラスだから

    そういう事じゃなくて…………
    JSにはクラスという機構があるみたいに思ってそれに凝る風習があるのに違和感感じてるんですよ
    583 : Name_Not - 2012/03/23(金) 11:33:46.06 ID:??? (+52,+29,-18)
    大規模なものは技巧に走ると破綻する
    584 : Name_Not - 2012/03/23(金) 11:53:37.30 ID:??? (+39,+6,-41)
    JavaScriptがLISPやScheme系の言語でC++やJavaとは違うってことを受け入れられずに
    C++やJavaのようなクラス継承を実現しようと腐心してJavaScriptはクソ言語だと...(省略)
    586 : Name_Not - 2012/03/23(金) 12:25:43.09 ID:??? (-28,-30,-234)
    >>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として扱いたいオブジェクト,引数配列);

    てすれば、クラスも継承も関係なく使える
    もちろん他のクラスのメソッド中でも構わない
    589 : Name_Not - 2012/03/23(金) 14:07:39.98 ID:??? (-14,-30,-285)
    >>582
    だからさ、「継承」なんてもっともらしいこと書くから
    prototypeうんぬんのレスがわんさか出てくるのよ。さっぱりわからんだろ。
    わけもわからず「継承」なんて持ち出すなってこと。

    「継承って何?」て話なら別だけど、var Func1 をよそで使いたいって話だろ?違うのか?

    var Sample2 = Sample();
    Sample2.alert_run = function() {
    this.run();
    };
    Sample2.alert_run();

    「新しく定義したい Sample2.alert_run の中でrunを走らせる」でいいなら、なんとでもできるだろ。
    590 : Name_Not - 2012/03/23(金) 14:33:28.14 ID:??? (+13,-30,+0)
    >>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回呼ばれる
    591 : 590 - 2012/03/23(金) 14:38:41.54 ID:??? (+3,-30,+0)
    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の動作も変わることに注意 */
    592 : Name_Not - 2012/03/23(金) 14:49:37.74 ID:nsoPDskq (+8,+29,-15)
    >>582
    んで、本当にやりたかったことは何だったの?
    プロジェクトリーダーの理解は本当に正しかったの?

    593 : Name_Not - 2012/03/23(金) 15:54:38.19 ID:??? (-14,-29,-13)
    ここのスレの皆でCoffeeScriptみたいなの作ろうぜ
    595 : Name_Not - 2012/03/23(金) 17:18:50.47 ID:??? (+0,-28,-2)
    世界にアピールするにはGreenTeaとかの方がいいな
    597 : Name_Not - 2012/03/23(金) 21:47:42.82 ID:??? (-11,-29,-74)
    >>596
    コメントは開発者が明示的に記述するもの。
    目的は保守性の担保。
    関数の処理単位のコメントは関数の上に。
    詳細な処理は関数内で随時。
    598 : Name_Not - 2012/03/23(金) 21:47:46.10 ID:??? (-6,-29,-4)
    まずJsDocでググろう
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について