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

私的良スレ書庫

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

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

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
651 : Name_Not - 2014/09/26(金) 19:52:59.96 ID:???.net (-2,-30,-28)
無名関数に名前を付けるって

var a = function(){
652 : Name_Not - 2014/09/26(金) 19:53:28.76 ID:???.net (-2,-30,-29)
無名関数に名前を付けるって

var a = function(){
};

ってことだろ
はい論破
653 : Name_Not - 2014/09/26(金) 20:01:34.73 ID:???.net (+31,-30,-39)
無名関数って名前が良くないよな

var a = function hoge(){};

これも無名関数だろ?
654 : Name_Not - 2014/09/26(金) 20:03:54.98 ID:???.net (+10,-30,-143)
>>647の言いたい事は↓これ
addEventListener("click", function hoge(){
...
removeEventListener("click, hoge); // ○
});
removeEventListener("click, hoge); // × hogeが見つからない

2度呼ばせないようにする事には使える
655 : Name_Not - 2014/09/26(金) 20:04:07.24 ID:???.net (+11,-11,+1)
名前付き関数式だね
656 : Name_Not - 2014/09/26(金) 20:12:27.03 ID:???.net (+39,-30,-137)
>>654
大体そうだけど、元のコードを尊重すると
var func = function(obj){
return function foobar(){
console.log(obj);
obj.removeEventListener('click', foobar);
}
};
を想定してた

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

みたいな即時関数で再帰使いたい時に使わん?
657 : Name_Not - 2014/09/26(金) 21:09:29.60 ID:???.net (+39,+16,+0)
ありがとうございますできました
658 : Name_Not - 2014/09/26(金) 22:06:01.42 ID:???.net (+97,+29,-14)
>>653
それは無名関数とはいわない

>>656
普通に使うよね
659 : Name_Not - 2014/09/26(金) 22:13:45.24 ID:???.net (+105,+29,-52)
>>658
hogeは関数内部からしか参照できないんだから本質的には無名関数と変わりない
つまり無名関数という言葉の方がおかしい
はい論破
660 : Name_Not - 2014/09/26(金) 22:24:57.54 ID:???.net (+71,+29,-3)
>>659
お前はそれでいいや

他の人はググって確認しておくように
661 : Name_Not - 2014/09/26(金) 22:33:49.72 ID:???.net (+40,-30,-95)
addEventListener('click', a.func)
こういう感じのオブジェクトの中に関数が入った?関数を指定するのはダメで
addEventListener('click', func)
って関数はOKっていうのをどこかで読んだんですが理由教えてください
662 : Name_Not - 2014/09/26(金) 22:38:48.62 ID:???.net (+57,+29,-41)
無名関数式を名前付き関数式にしてるわけだから「名前を付ける」という言葉は間違ってないな
名前付き関数式の知名度はもう少しあがってもいい
663 : Name_Not - 2014/09/26(金) 22:40:08.97 ID:???.net (+62,+29,-3)
>>661
駄目な理由はない
駄目な理由をあなたが勘違いしてるとしか思えない
664 : Name_Not - 2014/09/26(金) 22:58:11.27 ID:???.net (+3,-29,-21)
>>661
コンテキスト=thisが変わるからじゃないかな
関数内でthisを使わないとか
callやapplyでthisを明示的に指定する、などの方法で問題は回避できる
665 : Name_Not - 2014/09/26(金) 22:59:41.62 ID:???.net (+57,+29,-12)
JavaScriptで無名関数という言葉は使うべきじゃない
なぜならそこでは無名性には大した意味はないから
はい論破
666 : Name_Not - 2014/09/26(金) 23:01:16.58 ID:???.net (+88,+29,-39)
無名関数と言わず、単に関数式と言えばいい
それに名前があろうがなかろうが、関数の外部には影響がないんだから
667 : Name_Not - 2014/09/26(金) 23:22:32.88 ID:???.net (+52,+29,-1)
すきにするがよい
668 : Name_Not - 2014/09/26(金) 23:35:25.81 ID:???.net (+3,-30,-227)
■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);

どっちも変わらなかった
669 : Name_Not - 2014/09/26(金) 23:54:08.18 ID:???.net (-1,-29,-59)
JavaScriptは単なる関数なのにthisにアクセス出来るけど、そのthisは呼び出す側の都合で何にでも設定出来る
関数内でthisにアクセスする時はthisが何なのか気にする必要がある
670 : Name_Not - 2014/09/27(土) 00:05:01.14 ID:???.net (+83,-30,-165)
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にできますか?
671 : Name_Not - 2014/09/27(土) 00:21:53.94 ID:???.net (-3,-29,-17)
>>670
handleEvent
この質問は定期的に出てくるな
672 : Name_Not - 2014/09/27(土) 00:25:50.21 ID:???.net (+96,+22,-1)
>>666
関数内部の質問に対して何を言ってるんだか
673 : Name_Not - 2014/09/27(土) 01:28:26.62 ID:???.net (+107,+29,-6)
>>672
JavaScriptの本質についての話をしてるんだよ
質問は関係ない
674 : Name_Not - 2014/09/27(土) 01:32:54.97 ID:???.net (+77,+30,-100)
>>673
ああそう
で、関数式に名前を付けるのと付けないので異なる処理をすることを説明するときにもひとくくりに関数式と呼ぶのかね?
正式に言うなら「名前付き関数式」「無名関数式」でいいと思うがね
あの文脈なら「無名関数に名前を付ける」で十分に意味が通じるし、関数式ではむしろ意味が通らない
675 : Name_Not - 2014/09/27(土) 01:38:59.01 ID:KCamdbRG.net (+32,+29,-16)
おすすめの参考書とか聞いても答えてくれるん?
676 : Name_Not - 2014/09/27(土) 01:41:32.03 ID:???.net (+65,+29,-47)
>>675
特に制限はされてないと思うが
参考書に求めるものが具体的が明示されており、その目的に沿う参考書を知っている人がいたなら答えてくれるかもしれない
677 : Name_Not - 2014/09/27(土) 01:44:18.98 ID:???.net (+57,+29,-24)
素直に知らないって言えばいいのに
こいつらいっつも何がしたいかーとか何を求めているかーとかって言い訳するよな
聞き飽きたはw
678 : Name_Not - 2014/09/27(土) 01:48:09.78 ID:???.net (+57,+29,-33)
顧客の希望を聞かずにいきなり自分のお勧めを紹介する人は信用できない
判断基準が適当かつ恣意的にすぎる
679 : Name_Not - 2014/09/27(土) 01:50:56.96 ID:???.net (+52,+29,-2)
言い訳すんなっつってんだろw
680 : Name_Not - 2014/09/27(土) 01:52:17.82 ID:???.net (+88,+29,-20)
普遍的な価値基準があると本気で信じてるんだな
馬鹿すぎるわw
682 : Name_Not - 2014/09/27(土) 02:03:18.22 ID:???.net (+68,+29,-32)
>>670
thisはhogeになってるよw

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

ブラウザのデバッガ機能のステップ実行とか
使って動きを一行ずつ確認してみれ
683 : Name_Not - 2014/09/27(土) 02:11:35.90 ID:???.net (+101,+29,-32)
>>680
お前は馬鹿の一つ覚えみたいに同じことばっかりいうよなw
684 : Name_Not - 2014/09/27(土) 03:17:01.23 ID:???.net (+105,+29,-3)
>>683
理解力の低い人に対しては致し方ないな
685 : Name_Not - 2014/09/27(土) 03:38:20.55 ID:???.net (+57,+29,-22)
ライブラリを作る時にはこうしたら便利だよ的なことが書かれている本があれば教えて下さい
686 : Name_Not - 2014/09/27(土) 03:56:01.44 ID:???.net (+57,+29,-16)
JavaScriptパターンにそれっぽいことが書かれてるようなので
再読してみます
687 : Name_Not - 2014/09/27(土) 04:38:15.28 ID:???.net (+9,-30,-86)
>>670
呼び出し元の
test.addEventListener('click', hoge.print, false);
を変えないということならば
hoge.print = function(){
console.log(this);
}.bind(hoge);
こうだな
688 : Name_Not - 2014/09/27(土) 05:06:13.55 ID:???.net (+69,+29,-6)
>>670
再起呼び出しが無限ループしてるよw
そんでスタックオーバーフローしてる
689 : Name_Not - 2014/09/27(土) 06:42:55.11 ID:???.net (+32,-30,-134)
>>632
悪意のあるスクリプトタグが追加されて、
この悪意あるスクリプトは見えないiframeを追加し、RIG exploit kitをホスティングするWebサイトにリダイレクトする。
最終的にはドライブバイダウンロードによりマルウェアが閲覧者のコンピューター上で実行されるという。


ここ最近jQueryの公式にアクセスした奴は
使ってるPCと、その間アクセスしたサーバー/システムのチェックとパスワードの変更をしておけよ
690 : Name_Not - 2014/09/27(土) 07:26:44.73 ID:???.net (+82,+29,-3)
>>684
お前は同レベルってことに気づいてないのか・・・
691 : Name_Not - 2014/09/27(土) 11:37:47.62 ID:???.net (+46,-30,-248)
<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 : Name_Not - 2014/09/27(土) 11:45:40.16 ID:???.net (+73,+30,+0)
693 : Name_Not - 2014/09/27(土) 12:09:38.06 ID:???.net (-1,-29,-25)
Backbone.Routerは通信をフックする機能のようですが、
通信先を書き換えることはできないんですか?
694 : Name_Not - 2014/09/27(土) 12:45:30.44 ID:ha25ZVsE.net (+35,+28,-82)
>>689
ドライバって実行ファイルだろ?
普通警告出るし、実行しなけりゃ問題ないんじゃないの?
もしCDNのjqueryをこっそり改造して変数の内容をどこかに転送
とかしてたら恐ろしい被害が出ただろうな
695 : Name_Not - 2014/09/27(土) 12:49:46.05 ID:???.net (+29,-30,-100)
>>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 : Name_Not - 2014/09/27(土) 12:53:53.53 ID:???.net (+21,-16,+0)
>>695
IE8てまだサポートしてたのか。
697 : Name_Not - 2014/09/27(土) 13:08:07.35 ID:???.net (+5,-30,-124)
>>696
サポートどころかこんなデータもあるぐらいだよ。

IE8 50ヶ月連続1位 - 4月ブラウザシェア 2014/05/07
http://news.mynavi.jp/news/2014/05/07/066/

http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2&qpcustomd=0

Internet Explorer 8.0 21.40%
Internet Explorer 11.0 17.54%
Chrome 36.0 11.05%
Firefox 31 10.51%
Internet Explorer 9.0 9.24%
Internet Explorer 10.0 6.18%
Internet Explorer 6.0 3.33%


statcounterの方ではIE11の方が多いが、順位では5番目に利用者が多いブラウザ。
http://gs.statcounter.com/#all-browser_version-ww-monthly-201308-201408
698 : Name_Not - 2014/09/27(土) 13:46:46.82 ID:QhduZYQw.net (+24,+29,-59)
サイトによっては、アクセス解析の結果、IE8が少なくないこともあるな

あと残念なのが、ユーザではなく客が仕事場で使っているのがIE8だから
って理由でそれに合わせることも少なくない
699 : 691 - 2014/09/27(土) 14:07:33.44 ID:???.net (+6,-30,-62)
>>695
そもそも、IE8をサポートするなら addEventListener を使えないだろう
(addEventListener 前提の質問だから考慮はしなかったが)
IE8を考慮するならクロージャに閉じ込めたスコープで Function#call でも使えばいい
700 : 690 - 2014/09/27(土) 14:13:23.50 ID:???.net (+11,-29,+0)
>>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 スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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