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

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

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

    201 = :

    >>192
    なしだろこんなの
    意味不明

    202 = :


    /nox/remoteimages/b1/0e/8c70c09096dc71be8925155c9e5f.png

    203 = :

    他人がどういうコード書こうと批判する気は無いけど

    >だとしたら関数にstatic変数を持たせるのに都合がいいですが

    これはちょっとわからない

    208 = :

    >sratic変数は外のスコープから参照可能だが

    typoは無視するとして、>>192もそうだがprivateとごっちゃになっている気がする
    staticはstatic

    209 = :

    妄想に論理性を求めるのは無駄というもの

    210 = :

    ふぅ、こんなピリピリした話をしてるなら
    いつものようにjQueryの話題で盛り上がっていたほうが良いな

    211 = :

    俺はSPAの実際のところが気になる

    できるかどうか、難易、フレームワーク云々、以前にSPA必須な案件にまったく遭遇しない

    212 = :

    普通のサイトがSPA取り入れても
    違和感が出るだけだしな。

    クリックしたらページが変わるだろう所で変わらないから
    違う、そうじゃないって思っちゃう

    213 = :

    そんなもんトランジションアニメーションさせればいいだけの話。
    アドレスバーのurlも自由自在よ。

    214 = :

    そこまでしてSPAにこだわるメリットがない

    215 = :

    >>192
    あたまよさそうだねきみ
    後学のためにどういう風に使うのか具体的な事例とコードよろしく

    216 = :

    >>208
    そんなわけないでしょう
    privateの意味分かってますか?

    217 = :

    >>215
    $(document).on('click', '#hoge', function f(e) {
    if (!f.fadeout) {
    f.fadeout = _.debounce(() => {
    $('#moge').fadeOut();
    }, 10000);
    }
    // いろいろな処理
    f.fadeout();
    });

    こんな感じに、関数の中から同一オブジェクトにアクセスしたい場合に使います
    fadeout開始するまでの待ち時間に再び呼び出された時には
    前回のfadeout予約がキャンセルされるような関数を、lodashのdebounceで作っています
    jqueryのdelayとstopで同じことをしようとしたのですが何故かうまくいかなかったので。
    これが唯一の実装方法でないのは当然ですが、複雑さを関数の中だけに閉じ込めるのがシンプルで好みです
    もっといい方法ありますか?

    218 = :

    >>192で言ってることをどこでつかっとんそれ?

    219 = :

    イベントは、発行/購読パターンが基本

    Mediator もある。
    仲介者、まとめ役、橋渡し役、管制塔

    イベントキャンセルできるイベントキューのライブラリは、
    オライリーの著者などの、外人が作っている

    自分で作ったら、複雑すぎて大変

    Stoyan Stefanov 著
    JavaScriptパターン ―優れたアプリケーションのための作法、2011
    オブジェクト指向JavaScript、2012

    JavaScriptデザインパターン、Addy Osmani, 2013

    220 = :

    setTimeoutの戻り値を自関数の中で管理するだけで済むように見えるんだが、こういう挙動が欲しいのではないのか?

    document.getElementById('mybutton').addEventListener( 'click', function f(){
      var delay = 3000;
      if( ( 'timeoutId' in f ) === false )
        f.timeoutId = false;
      if( f.timeoutId !== false )
        clearTimeout(f.timeoutId);
      f.timeoutId = setTimeout( function(){
        f.timeoutId = false;

        /* my oparation */

      }, delay );
    }, false );

    目印は別にfalseでなくてもいいが

    221 = :

    >>218
    何を言っているのか分かりません

    222 = :

    >>221
    関数「名」は、予約&予約キャンセルの仕組みには、一切関係ないではないか
    ということだと思うが

    223 = :

    >>220
    setTimeoutの返り値でキャンセルするっていうのは当たり前の話です
    わざわざ複雑にした処理をドヤ顔で書ける神経が分かりません

    224 = :

    >>223
    目的の挙動はこれで合っているのか間違っているのか、だけが欲しい

    225 = :

    >>222
    いや、だから何????
    そんな話誰してないだろ???

    226 = :

    >>224
    いやだから、何でわざわざ無駄に複雑にした処理を検討しなきゃいけないの???
    甘えすぎじゃね???

    227 = :

    >>225
    >この関数名は、関数内からしか参照できないのでしょうか?
    >だとしたら関数にstatic変数を持たせるのに都合がいいですが、

    「関数名」を「参照できる範囲(private性)」について、「だとしたら」で繋いでいるから

    228 = :

    ・・・・これ複雑か?

    229 = :

    質問スレにはままあることですが
    回答者に回るレベルに至っていない連中がちょっと回答者に回りすぎでは?
    もう少しわきまえて下さい
    分かりましたね?

    230 = :

    >>226
    合っているのだな

    231 = :

    >>228
    ええ、無駄に複雑ですね。無駄に。

    232 = :

    $('#hoge').on('hoge',(e)=>{
    console.log('hoge');
    });

    $(document).trigger('hoge');

    このように上位要素でtriggerしても下位の要素で受け取ることは出来ません
    上位で受け取ってコールバックするような機構が必要だと思いますが
    どうやるのが定石なのでしょうか?

    233 :

    >>221
    は?
    何を言ってるか分からんてアホ?
    >>192で言ってることをどこで使ってるか説明してって言ってるだけなんだが?
    使ってないってこと?

    234 = :

    >>229
    バカが回答をりかいできなくて逆ギレしだすのも質問スレにはよくある

    235 = :

    結局>>192をどうつかってるのか分からんだよね

    236 = :

    >>232
    jqueryスレへどうぞ

    238 = :

    >>235
    192はアホすぎて使いようがいない印象をうける
    だからこそどうやって使うのかにはかなり興味あるのだがそれは示せないだろう

    239 = :

    >>232
    意味が分からん。

    $(document).trigger('click')ってやったら、
    HTMLに含まれる全てのボタンやリンクに対して
    クリックされたというイベントを発動させたいのか?

    240 = :

    >>217
    たしかにどこが複雑なのかも分からん
    我流じゃなくて関数型の勉強したほう良いと思う

    241 = :

    うっせかす
    俺より底辺共が生意気言うなぼけ

    242 = :

    簡潔で非ライブラリ依存なコードをあっさり提示されてて草

    243 = :

    >>242
    何の話?

    244 = :

    わからんね。簡素じゃなくて冗長なクソコードなら
    >>220にあるけどそれのことかな?w

    なにがクソかというと無駄なことしてるから。
    clearTimeoutが無効な値を渡しても例外でないのは保証されてるのだから
    >>220はこれだけでいい。これがクソコードである根拠
    やらなくて良いことをやるのは丁寧なのではなく単に無駄なだけ

    document.getElementById('mybutton').addEventListener( 'click', function f(){
      var delay = 3000;
      clearTimeout(f.timeoutId);
      f.timeoutId = setTimeout( function(){
        /* my oparation */
      }, delay );
    }, false );

    そしてもちろんこれはライブラリを使えば、もっと簡素に実現できる

    $('#mybutton').click(_.debounce(function() {
     /* my oparation */
    }, 3000));

    非ライブラリのコードも簡素に書けないやつが、
    ライブラリよりも簡素に書けるとか言わないほうが良い
    恥をかくだけだぞw

    245 = :

    >>217
    単に_.debounceの使い方が良くない

    _.debounce は オリジナルのイベントハンドラを
    遅延実行機能付のイベントハンドラに変えるもの
    と考えたほうが良い

    そこに書いたコードは、これだけでいい

    $(document).on('click', '#hoge', _.debounce(function() {
      $('#moge').fadeOut();
      // いろいろな処理
    }, 3000));

    jQueryのstopはよく分からんね。俺もアニメーションはあまり使わないので。
    俺が言えることは今はCSSを使ったほうが良いということぐらいだろう

    stopだけで単体で実行したらキャンセルされるが、stop().delay()みたいに
    続けるとキャンセルできないアニメーションのキュー(?)の絡みの仕様なんだろうけど

    ドキュメントにも、setTimeoutを置き換えるものじゃないと書いてあるので
    http://api.jquery.com/delay/
    setTimeoutをそのまま使うか、lodashでラップされた関数を使うほうが良いのだろう

    246 = :

    やっぱり俺がいないとスレのレベルが下がるなw
    jQueryを使ったコードだけでなく、
    ネイティブのコードもね

    247 = :

    >>244
    旧泥でclearTimeoutにundefinedを渡すとエラー吐くことがあった気がするが
    nullや、あと確かfalseだとエラーを吐かない

    LS仕様ではdo nothingと決められていることや
    ライブラリではその辺の扱いを別所で定義しているから行数が減ることは間違いない
    見て読みやすいコードは無駄ではないことも間違いないとは思うが

    248 = :

    今ちらっとlodashのgithubを見てきたがdebounce.jsのcancelで以下のように確認を入れてから
    cancelTimerでclearTimeoutしているところから見ても、少なくとも無駄ではないと思う
    というより、事前確認が無駄ならlodashのこの記述も無駄になるような

    if (timerId !== undefined) {
    cancelTimer(timerId)
    }

    249 = :

    >>247
    そういうことを考慮したとしてもこれだけですむ
    冗長なことに変わりはないよ

    document.getElementById('mybutton').addEventListener( 'click', function f(){
      var delay = 3000;
      if (f.timeoutId) clearTimeout(f.timeoutId);
      f.timeoutId = setTimeout( function(){
        f.timeoutId = undefined;
        /* my oparation */
      }, delay );
    }, false );

    250 = :

    >>249
    clearTimeoutに渡す内容の確認はクソコードかつ無駄ではなく必要なものだったと
    認めたということで良いかな

    初期化は好み次第だと思うけどね
    javascriptではプロパティは事前定義しなくてもいいというのは正直どうかと思うところがある


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

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


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