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

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

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

    653 = :

    無名関数って名前が良くないよな

    var a = function hoge(){};

    これも無名関数だろ?

    654 = :

    >>647の言いたい事は↓これ
    addEventListener("click", function hoge(){
    ...
    removeEventListener("click, hoge); // ○
    });
    removeEventListener("click, hoge); // × hogeが見つからない

    2度呼ばせないようにする事には使える

    655 = :

    名前付き関数式だね

    656 = :

    >>654
    大体そうだけど、元のコードを尊重すると
    var func = function(obj){
    return function foobar(){
    console.log(obj);
    obj.removeEventListener('click', foobar);
    }
    };
    を想定してた

    あと
    (function me() {
     :
     :
     me();
    })();

    みたいな即時関数で再帰使いたい時に使わん?

    657 = :

    ありがとうございますできました

    658 = :

    >>653
    それは無名関数とはいわない

    >>656
    普通に使うよね

    659 = :

    >>658
    hogeは関数内部からしか参照できないんだから本質的には無名関数と変わりない
    つまり無名関数という言葉の方がおかしい
    はい論破

    660 = :

    >>659
    お前はそれでいいや

    他の人はググって確認しておくように

    661 = :

    addEventListener('click', a.func)
    こういう感じのオブジェクトの中に関数が入った?関数を指定するのはダメで
    addEventListener('click', func)
    って関数はOKっていうのをどこかで読んだんですが理由教えてください

    662 = :

    無名関数式を名前付き関数式にしてるわけだから「名前を付ける」という言葉は間違ってないな
    名前付き関数式の知名度はもう少しあがってもいい

    663 = :

    >>661
    駄目な理由はない
    駄目な理由をあなたが勘違いしてるとしか思えない

    664 = :

    >>661
    コンテキスト=thisが変わるからじゃないかな
    関数内でthisを使わないとか
    callやapplyでthisを明示的に指定する、などの方法で問題は回避できる

    665 = :

    JavaScriptで無名関数という言葉は使うべきじゃない
    なぜならそこでは無名性には大した意味はないから
    はい論破

    666 = :

    無名関数と言わず、単に関数式と言えばいい
    それに名前があろうがなかろうが、関数の外部には影響がないんだから

    667 = :

    すきにするがよい

    668 = :

    ■A
    var test = document.getElementById('test');
    var hoge = {};
    hoge.print = function(){
    console.log(this); // divを参照する
    };
    test.addEventListener('click', hoge.print, false);

    ■B
    var test = document.getElementById('test');
    var hoge = function(){
    console.log(this); // divを参照する
    };
    test.addEventListener('click', hoge, false);

    どっちも変わらなかった

    670 = :

    var test = document.getElementById('test');
    var hoge = {};
    hoge.print = function(){
    var _this = hoge.print.call(hoge);
    console.log(_this);
    };
    test.addEventListener('click', hoge.print, false);

    Uncaught RangeError: Maximum call stack size exceeded ってなりました
    どうやってthisをhogeにできますか?

    672 = :

    >>666
    関数内部の質問に対して何を言ってるんだか

    673 = :

    >>672
    JavaScriptの本質についての話をしてるんだよ
    質問は関係ない

    674 = :

    >>673
    ああそう
    で、関数式に名前を付けるのと付けないので異なる処理をすることを説明するときにもひとくくりに関数式と呼ぶのかね?
    正式に言うなら「名前付き関数式」「無名関数式」でいいと思うがね
    あの文脈なら「無名関数に名前を付ける」で十分に意味が通じるし、関数式ではむしろ意味が通らない

    675 :

    おすすめの参考書とか聞いても答えてくれるん?

    676 = :

    >>675
    特に制限はされてないと思うが
    参考書に求めるものが具体的が明示されており、その目的に沿う参考書を知っている人がいたなら答えてくれるかもしれない

    677 = :

    素直に知らないって言えばいいのに
    こいつらいっつも何がしたいかーとか何を求めているかーとかって言い訳するよな
    聞き飽きたはw

    678 = :

    顧客の希望を聞かずにいきなり自分のお勧めを紹介する人は信用できない
    判断基準が適当かつ恣意的にすぎる

    679 = :

    言い訳すんなっつってんだろw

    680 = :

    普遍的な価値基準があると本気で信じてるんだな
    馬鹿すぎるわw

    682 = :

    >>670
    thisはhogeになってるよw

    それ以前に他の場所、関数の戻り値とかの
    もっと初歩的な所が理解出来てないだけ。

    ブラウザのデバッガ機能のステップ実行とか
    使って動きを一行ずつ確認してみれ

    683 = :

    >>680
    お前は馬鹿の一つ覚えみたいに同じことばっかりいうよなw

    684 = :

    >>683
    理解力の低い人に対しては致し方ないな

    685 = :

    ライブラリを作る時にはこうしたら便利だよ的なことが書かれている本があれば教えて下さい

    686 = :

    JavaScriptパターンにそれっぽいことが書かれてるようなので
    再読してみます

    687 = :

    >>670
    呼び出し元の
    test.addEventListener('click', hoge.print, false);
    を変えないということならば
    hoge.print = function(){
    console.log(this);
    }.bind(hoge);
    こうだな

    688 = :

    >>670
    再起呼び出しが無限ループしてるよw
    そんでスタックオーバーフローしてる

    689 = :

    >>632
    悪意のあるスクリプトタグが追加されて、
    この悪意あるスクリプトは見えないiframeを追加し、RIG exploit kitをホスティングするWebサイトにリダイレクトする。
    最終的にはドライブバイダウンロードによりマルウェアが閲覧者のコンピューター上で実行されるという。


    ここ最近jQueryの公式にアクセスした奴は
    使ってるPCと、その間アクセスしたサーバー/システムのチェックとパスワードの変更をしておけよ

    690 = :

    >>684
    お前は同レベルってことに気づいてないのか・・・

    691 = :

    <div id="root">
    <div>
    aaaaaaa
    <p>bbbbbbbbbbbb</p>
    </div>
    <div>c</div>
    </div>

    var root = document.getElementById('root');
    root.addEventListener('click', function(e){
    console.log(this);
    console.log(e.target.innerHTML);
    console.log(e.target);
    console.log(e);
    }, false);

    #rootをgetElementByIdで取ってイベントリスナーでClickした時に
    子要素のどこをクリックしても頂点の#rootが欲しいんですが
    e.targetとeをみても取れなさそうでした
    どうやれば#rootにたどれますか?

    692 = :

    >>691
    http://developer.mozilla.org/en/docs/Web/API/event.currentTarget

    694 :

    >>689
    ドライバって実行ファイルだろ?
    普通警告出るし、実行しなけりゃ問題ないんじゃないの?
    もしCDNのjqueryをこっそり改造して変数の内容をどこかに転送
    とかしてたら恐ろしい被害が出ただろうな

    695 = :

    >>692
    > On Internet Explorer 6 through 8, the event model is different.
    > Event listeners are attached with the non-standard element.attachEvent method.

    この文章が気になりました。

    IE8のサポート終了って2016年1月なんですよね。

    696 = :

    >>695
    IE8てまだサポートしてたのか。

    698 :

    サイトによっては、アクセス解析の結果、IE8が少なくないこともあるな

    あと残念なのが、ユーザではなく客が仕事場で使っているのがIE8だから
    って理由でそれに合わせることも少なくない

    699 = :

    >>695
    そもそも、IE8をサポートするなら addEventListener を使えないだろう
    (addEventListener 前提の質問だから考慮はしなかったが)
    IE8を考慮するならクロージャに閉じ込めたスコープで Function#call でも使えばいい

    700 = :

    >>692
    すいませんcurrentTargetがnullでした


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

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


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