web-dev-qa-db-ja.com

javascriptで「自己」とはどういう意味ですか?

ここselfは現在のウィンドウまたはフォームを参照しています」と読みました。

この場合、自己は現在のフォームを参照していないようです。

<form><input type="text" onkeyup="alert(self.foo.value)" name="foo"></form>

ただし、この場合は機能します(ウィンドウを参照)。

<form><input type="text" onkeyup="alert(self.document.forms[0].foo.value)" name="foo"></form>

では、selfだけでwindow DOMプロパティを使用するのはいつですか?

25
Nick Van Brunt

すべてのウィンドウで、selfオブジェクトのwindowプロパティとwindowプロパティは現在のウィンドウの同義語であり、オプションでそれらを使用して現在のウィンドウを参照できます。たとえば、closeまたはwindowのいずれかのselfメソッドを呼び出すことにより、現在のウィンドウを閉じることができます。これらのプロパティを使用して、コードを読みやすくしたり、プロパティ参照を明確にしたりできますself.statusstatusというフォームから。

10
Swift

他の回答では、selfFORMを参照せず、selfwindowであると指摘しています。彼らは正しいです。 selfiswindow。そうでない場合を除いて、まあ。 IE6またはIE7(忘れた)のどちらでも、self.onloadは起動しますが、window.onloadは起動しません。

IE(およびIE9pr3)のすべての公式バージョンには、これらのホストオブジェクトを使用した==の奇妙な自動詞実装があります。==を使用してwindowまたはselfをドキュメント内のノードの場合、結果はtrueです。

IEの奇数

alert(self == document.body); // true 
 alert(document.body == self); // false 
 alert(window == self); // true 
 alert(window === self); // false 
 var b = document.createElement( "b"); 
 alert(window == b); // false 
 alert(window == document.body.appendChild(b)); // true 
 alert(window == document.body.removeChild(b)); // false 
12
Garrett

selfは予約済みのキーワードまたは標準タイプではありませんが、クロージャーのオブジェクトへの参照を保持するための事実上の標準名になっています。

ここでは、setTimeout()に渡すクロージャを作成します。そのクロージャが実行されると、thisはグローバルオブジェクトを参照します。 fooオブジェクトへの参照を保持するためにdoLaterが最初に呼び出されたため、selfという名前の変数が使用されます。 'self'には意味のあるセマンティクスがあります。

Foo.prototype.doLater = function() {
  var self = this; // current object

  window.setTimeout(function() { self.doSomething(); }, 1000);
}

new Foo().doLater();
11
Chadwick

後で参照できるようにコンテキストを参照する関数のスコープにself変数を作成したい場合を除いて、決して。

function Constructor() {
    var self = this;
}

thisではなく、selfを使用して手元の要素を参照する必要があります。グローバルスコープでは、thiswindowへの参照であり、selfwindowです。

6
meder omuraliev

selfグローバルスコープを参照します-コンテキストがウィンドウの場合はwindow.selfを参照しますが、ウィンドウ化されていないコンテキストの場合は、そのコンテキストのグローバルスコープを参照します(たとえば、Service Workerコードでは、selfはワーカーのグローバルスコープを参照します)。

自己とは、コンテキストのグローバルスコープを指します。

  • ウィンドウコンテキスト
  • ワーカーコンテキスト(同じWebアプリの複数のワーカーのサポートに取り組んでいます)。

https://developer.mozilla.org/en-US/docs/Web/API/Window/self