JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net (766レス)
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1449440793/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
72: デフォルトの名無しさん [sage] 2016/04/25(月) 00:30:16.00 ID:th/2rgKP ふと思ったんだが、forEach って何で currentValue が this になるのがデフォじゃないんだ? グローバルじゃ意味無いよな? 引数で与えられるから動作としては問題なく、見た目だけの話だけど。 > forEach に thisObject パラメータが与えられると、callback の呼び出しのたびにそのオブジェクトが this として使用されます。thisObject が与えられないか null だと、callback に結び付けられたグローバルオブジェクトが代わりに使用されます。 > https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach http://mevius.5ch.net/test/read.cgi/tech/1449440793/72
76: デフォルトの名無しさん [sage] 2016/04/25(月) 17:28:53.92 ID:q4sdOoqx >>72 Array#forEachのコールバック関数にcurrentValueをthis値束縛する動作が自然ではなく、それによるメリットもないからだ prototype上のメソッドでもないただのコールバック関数がなぜarrayでもグローバルオブジェクトでもなく、cirtentValueに束縛するのだ? Function#bindでthis値を1に変更した場合、全ての要素値が1と扱う実装に利便性があるとは思えない (arrayに束縛するならわからんでもないが) forEachは第3引数でコールバック関数のthis値を指定できるが、これは異なるスコープからデータを渡すのに便利だ (jQuery#eachにはこの機能はない) イベントハンドラ関数のcutrentTargetへのthis値束縛もDOM3までは存在せず、DOM4で実装から逆輸入して規定されたものだ addEventListenerには元々、handleEventでthis値を束縛する機能があり、thisをcurrentTargetとして扱うコードはhandleEventを利用した途端に修正を迫られる event.currentTarget === this は相互運用性の為に仕様に取り込まれたに過ぎない ちなみに、jQueryではhandleEventを利用出来ない jQueryがthisを多用するのは仮引数を書く手間を減らす為だけに定められた歪なものだ ECMAScriptでは関数呼び出しされるまでthis値が定まらない不定値だが、jQueryはthisをローカル変数でも引数でもない第三の格納倉庫として利用し、コード上でthis値が変更されることを許さない this値に変更されて困る重要なデータを格納するのが当然と思う風潮が一部で生まれている気がしないでもない http://mevius.5ch.net/test/read.cgi/tech/1449440793/76
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s