No.4ベストアンサー
- 回答日時:
>・書き方が違うだけで同じことを出来るのでしょうか
javascriptのbindの事がFunction.bindの事を指しているのであれば
jQueryのbindとは機能が違います。
Function.bindに相当するのはjQuery.proxyになります。
逆に、jQuery.bindに相当するのはEventTarget.addEventListenerになります。
>・bindが記述されているとき、それがJavaScriptなのかjQueryなのかどうやって判断するのでしょうか?
関数を呼ぶときにxxx.bind(...)と書くと思いますが。
xxx部分のオブジェクトが何かで判断します。
jQueryオブジェクトであればjQuery.bind
functionであればfunction.bindとなります。
var $button = $('#id');
$button.bind('click', function(){ console.log('click'); });
^^^^^
ここがjQueryオブジェクトなので、jQuery.bind
var click = function(){ console.log('click'; )};
click.bind(this);
^^^^^
ここがFunctionなので、Function.bind
---------------------------------------------------
ではなぜ,Funcion.bindやEventTarget.addEventListenerがあるのに、jQueryはそれに相当するjQuery.proxyやjQuery.bindを作るのか?
それは、Funcion.bindやEventTarget.addEventListenerはすべてのブラウザーで動かないのが原因です。
https://developer.mozilla.org/ja/docs/Web/JavaSc …
上のURLはFunction.bindの説明ですが『Polyfill』にこのような記載があります
>bind 関数は ECMA-262 第5版に最近追加されたので、すべてのブラウザに存在するわけではありません。
https://developer.mozilla.org/ja/docs/Web/API/Ev …
addEventListenerの説明も『古い Internet Explorer と attachEvent』の部分でこのような記載があります
>IE9 より前の Internet Explorer では、標準の addEventListener ではなく、 attachEvent を使わなければなりません。
このようにブラウザー毎に、関数がなかったり、名前が違ったりします。
この挙動の違いをjQueryが吸収するように作れられていて。
jQuey.proxyでは、Function.bindが無くても問題ないように
jQuey.bindは、addEventListenerとattachEventどちらを呼ぶか振り分けたりするよになっています。
----------------------------------
予断ですが、jQuery.bindは古い書き方で、今はjQuey.onに置き換わっています、
http://tacamy.hatenablog.com/entry/2013/03/03/21 …
回答ありがとうございました。
>Function.bindに相当するのはjQuery.proxyになります。
>逆に、jQuery.bindに相当するのはEventTarget.addEventListenerになります
・ここら辺り混乱していたので、大変参考になりました
>なぜ,Funcion.bindやEventTarget.addEventListenerがあるのに、jQueryはそれに相当するjQuery.proxyやjQuery.bindを作るのか?
・突っ込んだ解説をいただき、ありがとうございます
・なぜだろう? と思っていたので、大変勉強になりました
>予断ですが、jQuery.bindは古い書き方で、今はjQuey.onに置き換わっています
・アドバイスありがとうございます
・バージョンアップに伴い、jQueryの書き方って、結構変わるんですね
・大変参考になりましたー
No.3
- 回答日時:
jQuery.prototype.bind と Function.prototype.bind は用途も所属オブジェクトも異なります。
jQuery.prototype.bind
http://api.jquery.com/bind/
Function.prototype.bind
https://developer.mozilla.org/ja/docs/Web/JavaSc …
jQuery.prototype.bind の場合、 bind プロパティの所属オブジェクトが jQuery オブジェクトになりますので、所属オブジェクトを確認するだけで判断可能です。
Function.prototype.bind は関数のプロパティですので、所属オブジェクトが関数なら該当します。
# Re: re97さん
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript JavaScript?jQuery?で書き方を教えてください。 初心者です。 AAAという要素をステ 2 2023/08/04 22:09
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- HTML・CSS アドバイスを下さい。 1 2022/10/08 01:18
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript jQueryローディングアニメーションのコードの以下のURL内参考サイトで提示されている 3 2023/07/03 18:29
- JavaScript 助けてください!スパムメールがとんでもなく大量に届きます。 3 2023/08/10 16:32
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- PHP ECCUBE4のページ管理でPHPを実行させたい 1 2023/04/06 11:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
Object型からDouble型へのキャスト
-
C#でフォームのオブジェクト名...
-
Vbで通常使用するプリンターを...
-
JAVAからHTMLへ値を返す方法
-
ワイルドカード<?>と型パラメー...
-
Accessの連結・非連結オブジェ...
-
【Java】入力した西暦→和暦に変...
-
bmp画像をjpegやpng画像に圧縮...
-
ビジュアルC++でボタンの有...
-
access2002のリレーションシッ...
-
javaでは基本型の参照渡しは無...
-
ASP.net 教えてください!!(...
-
Google Apps Scriptの時刻の計算
-
インデザインのテキスト回り込み
-
EXCEL VBAにて動的にCheckBOXを...
-
オブジェクトとは、わかりやす...
-
Listに格納されているオブジェ...
-
Alertの自動制御
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
vb.net オブジェクト指向につい...
-
COMコンポーネントって何?
-
オブジェクトレベルとメタレベル
-
ビジュアルC++でボタンの有...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト名をforループ内で...
-
Object型からDouble型へのキャスト
-
ADO オブジェクトの渡し方
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
戻り値がクラスオブジェクト
-
VBAでvlookup関数から、別シー...
おすすめ情報