[過去ログ] + JavaScript の質問用スレッド vol.117 + (1001レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
346(2): デフォルトの名無しさん [sage] 2014/12/05(金) 15:02:00.85 ID:LEC5N9e7(2/2) AAS
>>344344(2): デフォルトの名無しさん [sage] 2014/12/05(金) 14:41:34.64 ID:I0a9lIBJ(2/5) AAS
>>343
boundGetX は直訳すると「縛られたGetX」だけど、何に bind されてるか、わかりずらいかなーと思った
var boundGetX = getX.bind(module),
var boundGetX = getX.bind(hoge);
どちらも boundGetX で意味は通るけど、何にbindされてるかわからない
>>308の「getXは普通に考えると自分自身のxを返すという仕様であり」あたりは対象が不明だからそう思うのであって、module という対象が明確であればなんら問題はない
まぁ無理やり変数に代入しようとするからだな
element.addEventListener('mousedown', module.getX.bind(module), false);
とか
module内で
element.addEventListener('mousedown', this.getX.bind(this), false);
とか、毎回bindすれば分かりやすい
348: デフォルトの名無しさん [sage] 2014/12/05(金) 16:00:18.92 ID:I0a9lIBJ(4/5) AAS
>>346
そうだね
実際には変数束縛が不要なケースが多い
>>347instanceof 演算子
外部リンク:developer.mozilla.org
367: デフォルトの名無しさん [sage] 2014/12/08(月) 12:08:56.06 ID:3mx+HWhx(1/6) AAS
>>350350(1): デフォルトの名無しさん [sage] 2014/12/05(金) 20:57:15.97 ID:+TXyzC2W(3/4) AAS
>>293
は明らかにおかしいだろ。
var x = 9;
var module = {
x: 81,
getX: function() { return this.x; }
};
module.getX() は明らかにmoduleの中の
81を返すように設計されたと考えるべきだ。
よっぽどひねくれた人じゃない限り、module.getXというのは
module以外の渡されたオブジェクトの
xを変えすためのメソッドなんですなんて物は作らない。
内部の処理は隠ぺいするべきものなのだから、内部の処理で必要な
オブジェクトは内部で管理するべきもの。
var x = 9;
var module = Module(); // new Module() で作成するという設計もあり
module.getX();
こういう使い方をするのが普通のやり方。
いちいちbindして呼び出すなんてありえない。
何も分かってなくて失笑w
bindは>>346のようなコールバックに登録する時に必要で>>293293(12): デフォルトの名無しさん [sage] 2014/12/02(火) 03:15:02.67 ID:MjRXeq65(1/3) AAS
外部リンク:developer.mozilla.org
初心者の JavaScript プログラマーがよくやる間違いは、
あるオブジェクトからメソッドを取り出し、後でその関数を呼び出すとき、
その内側の this 値が元のオブジェクトになると考えてしまうことです
(例えば、そのメソッドをコールバック関数に使うケース)。
特に配慮しなければ、元のオブジェクトは失われてしまいます
【訳注: 取り出した関数内の this としては使えなくなる】。
その関数に元々のオブジェクトを bind() して束縛された関数を生成すれば、
この問題をきちんと解決することができます:
var x = 9;
var module = {
x: 81,
getX: function() { return this.x; }
};
module.getX(); // 81
var getX = module.getX;
getX(); // 9, この場合 "this" はグローバルオブジェクトを参照するため
// 'this' を module に結びつけた新しい関数を生成
var boundGetX = getX.bind(module);
boundGetX(); // 81
はその事を言っている
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.044s