JavaScript では、メソッドにコンテキストが含まれることが多いため、最も一般的な console.log("info...") を例として挙げます。長いコンソールの記述は避け、ログを直接使用してください。 ( "info...") とすると、次の構文が自動的に考えられます:
var log = console.log; log("info…");
申し訳ありませんが、実行中にエラーが発生しました: TypeError: 不正な呼び出しです。
なぜですか? console.log("info...") の場合、log メソッドは console オブジェクトで呼び出されるため、log メソッドの this は console オブジェクトを指し、log 変数を使用して console.log メソッドを指します。そして、log メソッドを直接呼び出します。このとき、log メソッドは window オブジェクトを指しています。コンテキストが矛盾している場合は、当然エラーが報告されます。
この時点で、bind メソッドを使用してこの問題を解決できます。バインド メソッドを使用すると、現在のメソッドのコンテキストとして this を手動で渡し、コンテキストを保持するメソッドを返すことができます。たとえば、次のようになります。
var log = console.log.bind(console); log("info...");
ただし、bind メソッドは IE 8 以前のブラウザをサポートしていません。非常に簡単に自分で実装できます。
Function.prototype.bind = Function.prototype.bind || function(context){ var _this = this; return function(){ _this.apply(context, arguments); }; };
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。