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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    851 = :

    これじゃあかんのか??

    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 = :

    jqeuryの文法はjavascriptと違うようですが、どうやって文法拡張してるんですか?
    それとも、うまいことメソッドを使って別の文法みたいに見せてるんですか

    853 = :

    >>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 = :

    後者で合ってる

    855 = :

    文法が違うと言われるとなんか違和感

    856 = :

    <div id="top">
    <div>a<div>
    <div>a<div>
    <div>a<div>
    <div>a<div>
    <div>a<div>
    </div>

    こういうhtmlがあります
    div#topの子要素をクリックしたときにインデックスが知りたいんですが
    これはどうやって調べればいいのでしょうか?

    857 = :

    これで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 = :

    >>854-855
    最近javascript始めたので、まだ文法うろ覚えなんです
    C++みたいな黒魔術使えるのかなーって思っただけです
    あざーす

    860 = :

    >>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 = :

    writable:trueとconfigurable:trueは要らんの?

    862 = :

    >>860
    なんでwebkit限定にするの?

    863 = :

    >>862
    まだプレフィックス要るよということをwebkitに代表させただけ
    他がどの程度対応してるかは知らん

    864 = :

    >>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 = :

    せやな

    868 = :

    恐怖のstaticおじさんの話じゃないだろうな……
    http://el.jibun.atmarkit.co.jp/pressenter/2010/11/1-828a.html

    869 = :

    本当にその画面にだけ必要な機能だけ分けてあとは共通ファイルにしたら
    関数数個のファイルだらけにならないか?

    870 = :

    継承のためのメソッドを実装した継承可能クラスがあれば
    継承を書くの簡単じゃね?と思ったのですが
    そういうのありますか?

    872 = :

    コンストラクタから親クラスのコンストラクタを呼び出したり
    メソッドをmixinしたりの処理がありますが・・

    873 = :

    javascriptでデストラクタのやり方をおしえてください

    874 = :

    ない

    875 = :

    >>872
    言葉はいいからコードでどうしたいのか例示して

    876 = :

    どうかくのが良いのでしょうか
    これのサンプルおねがいします

    877 = :

    >>876
    一般的な話過ぎて特定のサンプルコードにするのは難しいな

    878 = :

    ExtendableClass.inherit(Hoge,hogesMethods);
    Hoge.inherit(Moge,mogesMethods);
    var moge = new Moge();

    こんなイメージです

    879 = :

    一般的な話なのにコードにかけないのはよく理解してないからじゃないのか?

    880 = :

    >>873
    1回だけ参照が切れてるか調べる方法ならある

    881 = :

    >>880
    おしえてえください

    882 = :

    >>878

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

    Moge.__proto__ = Hoge.prototype
    Moge.prototype = mogesMethods

    883 = :

    そうですか・・・
    あごっちに直接聞けばいいんですけど・・・

    884 = :

    >>879
    ある程度まとまった量のコードを書かないと>>760に沿うようなサンプルの形にならんから
    手間的にちょっと厳しいって感じだ

    885 = :

    超簡単な話こういうこと

    //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 = :

    まちった

    //OK
    function Human(name, age) {
    this.wareki = getWareki(age)
    }

    887 = :

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

    888 = :

    Classが静的な言語なら幾ら分離してもIDEで追えるからいいけど
    JavaScriptでは必ずしもそうでじゃないよ

    889 = :

    >>886がよくて>>887がダメな理由がわからん

    890 = :

    >>885-887が
    >Class(Object)の構築を初期化内でやるのはやめましょう。
    これに対するサンプルコードだとは思えんな

    891 = :

    ロジックの分離ということだろう

    そしてこのケースだと単純すぎてそぐわないが
    obj.init()
    とか
    obj.set~
    みたいなスタイルが一番推奨ということだろう

    892 = :

    >>890
    >どうしてもさけられない場合でもせめてロジックと分離しましょう
    この部分です
    大きな構造になってくると>>891みたいな事だと思います

    893 = :

    クラスつまりコンストラクターとプロトタイプの定義と、
    それをインスタンス化して利用するコードをわけろっていうことなんじゃないの?
    >>886-887はクラスをどう定義するかって話になるんでちょっとズレてるような

    894 = :

    ちゃんとクラスを作れという話だよ
    動的にメソッドを追加するなってこと

    895 = :

    直前のツイート読む限りそういうことだな

    896 = :

    どんどんJavaScriptじゃなくなっていく気がするね
    もう別の言語でいいじゃんってならないの

    897 = :

    普通にJavaScriptのプロトタイプベースのオブジェクト指向の話だよ

    898 = :

    JavaScriptの最大の利点はブラウザでそのまま動くことなんですから
    各自が用途に適した作法で書けばいいでしょう
    ある程度規模の大きいプログラムの場合は>>893-894みたいな作法が好ましいってだけですね

    899 = :

    そんなことJSに限らず当たり前だろ

    900 = :

    クラス継承って、結局こんな関数書いてやるのが一番簡単ですよね?

    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一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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