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

    私的良スレ書庫

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

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

    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
    851 : Name_Not - 2013/09/19(木) 20:35:58.09 ID:??? (+9,-30,-134)
    これじゃあかんのか??

    Object.defineProperty(Object, 'mixin', {
    value: function (target, source) {
    var keys = Object.getOwnPropertyNames(source)
    for (var i = 0; i < keys.length; ++i) {
    target[keys[i]] = source[keys[i]]
    }
    return target
    }
    })
    852 : Name_Not - 2013/09/19(木) 21:07:30.12 ID:??? (+14,-23,-43)
    jqeuryの文法はjavascriptと違うようですが、どうやって文法拡張してるんですか?
    それとも、うまいことメソッドを使って別の文法みたいに見せてるんですか
    853 : Name_Not - 2013/09/19(木) 21:09:21.51 ID:??? (+4,-30,-171)
    >>851
    Object.defineProperty(Object, 'mixin', {
    value: function (target, source) {
    var keys = Object.getOwnPropertyNames(source);
    for (var i=0; i<keys.length; i++) {
    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
    }
    return target;
    }, enumerable: false
    });
    854 : Name_Not - 2013/09/19(木) 21:09:26.66 ID:??? (+71,+19,-2)
    後者で合ってる
    855 : Name_Not - 2013/09/19(木) 21:11:22.24 ID:??? (+52,+29,-4)
    文法が違うと言われるとなんか違和感
    856 : Name_Not - 2013/09/19(木) 21:15:15.61 ID:??? (+4,-30,-37)
    <div id="top">
    <div>a<div>
    <div>a<div>
    <div>a<div>
    <div>a<div>
    <div>a<div>
    </div>

    こういうhtmlがあります
    div#topの子要素をクリックしたときにインデックスが知りたいんですが
    これはどうやって調べればいいのでしょうか?
    857 : Name_Not - 2013/09/19(木) 21:16:17.85 ID:??? (+3,-30,-157)
    これでFAだな

    Object.defineProperty(Object, 'mixin', {
    value: function (target, source) {
    var keys = Object.getOwnPropertyNames(source);
    for (var i=0; i<keys.length; ++i) {
    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
    }
    return target;
    }
    });
    858 : 852 - 2013/09/19(木) 21:18:07.21 ID:??? (+67,+29,-9)
    >>854-855
    最近javascript始めたので、まだ文法うろ覚えなんです
    C++みたいな黒魔術使えるのかなーって思っただけです
    あざーす
    859 : Name_Not - 2013/09/19(木) 21:21:03.48 ID:??? (+0,-28,-16)
    jqueryは最初、$がただの関数名だと気づけなかった
    860 : Name_Not - 2013/09/19(木) 21:30:53.88 ID:??? (+7,-30,-133)
    >>856
    こんな感じ
    テストはしてない

    var tar = event.currentTarget
    var top = document.querySelector('div#top')
    var divs = document.querySelectorAll('div#top>div')
    while(tar && !tar.webkitMatchesSelector('div#top>div')) tar = tar.parentNode
    if(!tar) return //場違いな要素
    for(var i=0;i<divs.length)if(tar == divs[i]) break;

    //---iが番数--
    //以降処理
    861 : Name_Not - 2013/09/19(木) 21:35:32.84 ID:??? (+4,-29,-24)
    writable:trueとconfigurable:trueは要らんの?
    862 : Name_Not - 2013/09/19(木) 21:42:11.19 ID:??? (+25,-29,-1)
    >>860
    なんでwebkit限定にするの?
    863 : Name_Not - 2013/09/19(木) 21:57:17.79 ID:??? (+45,+14,-26)
    >>862
    まだプレフィックス要るよということをwebkitに代表させただけ
    他がどの程度対応してるかは知らん
    864 : Name_Not - 2013/09/19(木) 21:59:53.33 ID:??? (+3,-30,-158)
    >>861
    つうかプロトタイプ拡張じゃないんだからこれでいい

    Object.mixin = function (target, source) {
    var keys = Object.getOwnPropertyNames(source);
    for (var i=0; i<keys.length; ++i) {
    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
    }
    return target;
    }
    865 : Name_Not - 2013/09/19(木) 22:05:31.17 ID:??? (+35,+17,+0)
    せやな
    866 : Name_Not - 2013/09/19(木) 22:28:14.92 ID:??? (-1,-29,-13)
    SIerが作ってる業務APPは、画面枚にjavascriptを別ファイルに外出しするのが普通なんですか?
    867 : Name_Not - 2013/09/19(木) 22:29:14.52 ID:??? (-2,-29,-1)
    SIerってなに?
    868 : Name_Not - 2013/09/19(木) 22:33:26.84 ID:??? (+52,+24,-15)
    恐怖のstaticおじさんの話じゃないだろうな……
    http://el.jibun.atmarkit.co.jp/pressenter/2010/11/1-828a.html
    869 : Name_Not - 2013/09/19(木) 22:50:17.68 ID:??? (+57,+29,-11)
    本当にその画面にだけ必要な機能だけ分けてあとは共通ファイルにしたら
    関数数個のファイルだらけにならないか?
    870 : Name_Not - 2013/09/19(木) 23:07:32.13 ID:??? (+17,-10,-44)
    継承のためのメソッドを実装した継承可能クラスがあれば
    継承を書くの簡単じゃね?と思ったのですが
    そういうのありますか?
    871 : Name_Not - 2013/09/19(木) 23:16:23.24 ID:??? (-2,-30,-27)
    継承なんてこれでいいじゃん
    obj.__proto__ = ClassX.prototype
    872 : Name_Not - 2013/09/19(木) 23:20:27.32 ID:??? (+32,-29,-71)
    コンストラクタから親クラスのコンストラクタを呼び出したり
    メソッドをmixinしたりの処理がありますが・・
    873 : Name_Not - 2013/09/19(木) 23:21:23.09 ID:??? (+77,+16,-16)
    javascriptでデストラクタのやり方をおしえてください
    874 : Name_Not - 2013/09/19(木) 23:22:27.61 ID:??? (+28,+10,-1)
    ない
    875 : Name_Not - 2013/09/19(木) 23:26:42.91 ID:??? (+61,+29,-5)
    >>872
    言葉はいいからコードでどうしたいのか例示して
    876 : 760 - 2013/09/19(木) 23:28:35.92 ID:??? (+90,+29,-15)
    どうかくのが良いのでしょうか
    これのサンプルおねがいします
    877 : Name_Not - 2013/09/19(木) 23:33:17.33 ID:??? (+69,+29,-7)
    >>876
    一般的な話過ぎて特定のサンプルコードにするのは難しいな
    878 : Name_Not - 2013/09/19(木) 23:36:10.47 ID:??? (+9,-30,-30)
    ExtendableClass.inherit(Hoge,hogesMethods);
    Hoge.inherit(Moge,mogesMethods);
    var moge = new Moge();

    こんなイメージです
    879 : Name_Not - 2013/09/19(木) 23:49:48.73 ID:??? (+91,+29,-21)
    一般的な話なのにコードにかけないのはよく理解してないからじゃないのか?
    880 : Name_Not - 2013/09/19(木) 23:59:20.91 ID:??? (+95,+29,-4)
    >>873
    1回だけ参照が切れてるか調べる方法ならある
    881 : Name_Not - 2013/09/20(金) 00:00:57.43 ID:??? (+59,+23,-3)
    >>880
    おしえてえください
    882 : Name_Not - 2013/09/20(金) 00:04:27.82 ID:??? (+4,-30,-105)
    >>878

    Hoge.__proto__ = ExtendableClass.prototype
    Hoge.prototype = hogesMethods

    Moge.__proto__ = Hoge.prototype
    Moge.prototype = mogesMethods
    883 : 760 - 2013/09/20(金) 00:06:37.91 ID:??? (+57,+29,-6)
    そうですか・・・
    あごっちに直接聞けばいいんですけど・・・
    884 : Name_Not - 2013/09/20(金) 00:20:24.13 ID:??? (+74,+29,-29)
    >>879
    ある程度まとまった量のコードを書かないと>>760に沿うようなサンプルの形にならんから
    手間的にちょっと厳しいって感じだ
    885 : Name_Not - 2013/09/20(金) 00:31:03.69 ID:??? (+7,-30,-117)
    超簡単な話こういうこと

    //NG
    function Human(name, age) {
    var year = (new Date).getFullYear
    this.wareki = (year - age > 25) ? 'showa' : 'heisei'
    }

    //OK
    function Human(name, age) {
    var year = (new Date).getFullYear
    this.wareki = getWareki(year - age)
    }
    886 : Name_Not - 2013/09/20(金) 00:31:51.14 ID:??? (+68,-30,-40)
    まちった

    //OK
    function Human(name, age) {
    this.wareki = getWareki(age)
    }
    887 : Name_Not - 2013/09/20(金) 00:34:06.13 ID:??? (+38,-30,-59)
    //NG
    function Human(name, age) {
    var year = (new Date).getFullYear
    this.wareki = (year - age < 1988) ? 'showa' : 'heisei'
    }
    888 : Name_Not - 2013/09/20(金) 00:39:28.94 ID:??? (+57,+29,-39)
    Classが静的な言語なら幾ら分離してもIDEで追えるからいいけど
    JavaScriptでは必ずしもそうでじゃないよ
    889 : Name_Not - 2013/09/20(金) 00:47:00.27 ID:??? (+63,+29,-5)
    >>886がよくて>>887がダメな理由がわからん
    890 : Name_Not - 2013/09/20(金) 00:49:59.83 ID:??? (+32,-29,-18)
    >>885-887が
    >Class(Object)の構築を初期化内でやるのはやめましょう。
    これに対するサンプルコードだとは思えんな
    891 : Name_Not - 2013/09/20(金) 00:52:24.69 ID:??? (+33,-29,-53)
    ロジックの分離ということだろう

    そしてこのケースだと単純すぎてそぐわないが
    obj.init()
    とか
    obj.set~
    みたいなスタイルが一番推奨ということだろう
    892 : Name_Not - 2013/09/20(金) 00:56:27.65 ID:??? (+63,+29,-27)
    >>890
    >どうしてもさけられない場合でもせめてロジックと分離しましょう
    この部分です
    大きな構造になってくると>>891みたいな事だと思います
    893 : Name_Not - 2013/09/20(金) 01:03:49.30 ID:??? (+108,+29,-81)
    クラスつまりコンストラクターとプロトタイプの定義と、
    それをインスタンス化して利用するコードをわけろっていうことなんじゃないの?
    >>886-887はクラスをどう定義するかって話になるんでちょっとズレてるような
    894 : Name_Not - 2013/09/20(金) 01:22:23.78 ID:??? (+57,+29,-31)
    ちゃんとクラスを作れという話だよ
    動的にメソッドを追加するなってこと
    895 : Name_Not - 2013/09/20(金) 01:27:11.46 ID:??? (+57,+29,-16)
    直前のツイート読む限りそういうことだな
    896 : Name_Not - 2013/09/20(金) 03:01:03.48 ID:??? (+57,+29,-10)
    どんどんJavaScriptじゃなくなっていく気がするね
    もう別の言語でいいじゃんってならないの
    897 : Name_Not - 2013/09/20(金) 03:27:22.17 ID:??? (+6,-21,-19)
    普通にJavaScriptのプロトタイプベースのオブジェクト指向の話だよ
    898 : Name_Not - 2013/09/20(金) 03:36:12.84 ID:??? (+77,+29,-39)
    JavaScriptの最大の利点はブラウザでそのまま動くことなんですから
    各自が用途に適した作法で書けばいいでしょう
    ある程度規模の大きいプログラムの場合は>>893-894みたいな作法が好ましいってだけですね
    899 : Name_Not - 2013/09/20(金) 08:48:22.49 ID:??? (+52,+29,-15)
    そんなことJSに限らず当たり前だろ
    900 : Name_Not - 2013/09/20(金) 12:16:33.66 ID:??? (+36,-30,-231)
    クラス継承って、結局こんな関数書いてやるのが一番簡単ですよね?

    function extendsClass(Parent,Child) {
    var keys,key,i,prototype;
    prototype = Child.prototype;
    Child.prototype = Object.create(Parent.prototype);
    keys = Object.keys(prototype);
    for ( i=keys.length; i--;){
    key = keys[i];
    Child.prototype[key] = prototype[key];
    }
    Child.prototype.constructor = Child;
    }
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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