私はいくつかのJavaScript開発を行っており、この問題が発生しました。次のコードを検討してください。このキーワードJavaScriptの仕組みは?
var obj = {};
obj.bind = function() {
console.info(this);
};
obj.bind();
私はFireBug JavaScriptコンソールでコードを実行しています。予想される結果は、this
がコンソールへのオブジェクトへの参照を表示することです。
実際にはundefined
と表示されます。私は私のコード
var obj = {};
obj.bind = function() {
this.x = 'x';
console.info(this);
};
obj.bind();
に、この変更を行う際
しかし、今コンソールはobj
オブジェクトへの参照ですthis
の期待値が表示されます。
どうしてですか?
私はChromeのデベロッパーコンソールの最初の例を試してみましたが、それが表示されました期待どおりのオブジェクト。おそらくこれはFirebugのバグですか? –
コンソールにはいくつかのことがあります。一例は、 'delete'を使って変数を削除することです。コンソールではなく、外部で動作します。 – alex
@Jeremyいいえ、そうではありません。 「未定義」と表示されます。 Chromeはオブジェクトを表示しますが、これはChromeが実行するためであり、 'console.info'機能のためではありません。オブジェクトの下を見ると、定義されていない単語が見つかります。 –