1

私は基本的な JavaScript 構文のこつがあり、より深いレベルで言語を理解するために取り組んでいます。elizabot.jselizabot.js ライブラリ内のファイルの次のコード行を見ています。

var global=ElizaBot.prototype.global=self;
  1. これは、Elizabot オブジェクトのプロトタイプのグローバル プロパティを「self」に設定していると思います。その行の意味を正しく理解していますか?
  2. Self はJavaScriptの予約語ではないようです。しかし、Elizabot.js ファイルで「self」という単語を検索しても、見つかりません。javascriptのselfという言葉には特別な意味がありますか? 宣言が見つかりません。
4

2 に答える 2

4

ブラウザでselfは、グローバルwindowオブジェクトを参照します

ElizaBot は、 (プロトタイプを通じて) 作成された ElizaBot のすべてのインスタンスのグローバルプロパティを window オブジェクトに設定する関数です。

var global = ElizaBot.prototype.global=self;
function ElizaBot(){
  console.warn(this.global == self);
  console.warn(this.global == window);
  console.warn(self == window);
  console.warn(self.self.self.window.self == this.global.self.window);
  // I can go on forever :) time to stop
}
new ElizaBot();
new ElizaBot();
于 2013-09-26T21:07:50.873 に答える
2

ブラウザ (一般的な JavaScript ではない) では、現在の の値を含むオブジェクトselfのプロパティです。オブジェクトのすべてのプロパティはグローバル変数としてアクセスできるため、単に参照でき、現在のドキュメントのウィンドウへの参照が含まれます。windowwindowwindowself

したがって、あなたのコードでは:

var global=ElizaBot.prototype.global=self;

ElizaBot.prototype.globalと変数globalの両方に、現在のwindowオブジェクトへの参照を割り当てています。

としてもアクセスできる情報については、こちらを参照してください。window.selfself


参考までに、現在のウィンドウ オブジェクトは一般に他の方法でアクセスでき、個別に保存する必要がないため、これらの割り当てはすべて不必要に思えます。

于 2013-09-26T21:07:29.303 に答える