JavaScript 関数呼び出し
JavaScript内のコードは、function
「何か」がそれを呼び出すと実行されます。
JavaScript 関数の呼び出し
関数の定義時には、関数内のコードは実行されません。
関数内のコードは、関数が呼び出されたときに実行されます。
関数を関数として呼び出す
上記の関数は、どのオブジェクトにも属していません。しかし、JavaScriptには常にデフォルトのグローバル オブジェクトがあります。
HTMLでは、デフォルトのグローバル オブジェクトはHTMLページ自体であるため、上記の関数はHTMLページに「属します」。
ブラウザでは、ページ オブジェクトはブラウザ ウィンドウです。上記の関数は、自動的にウィンドウ関数になります。
注意
これは、JavaScript 関数を呼び出す一般的な方法ですが、あまり良い方法ではありません。グローバル変数、メソッド、または関数により、グローバル オブジェクトで名前の競合やバグを簡単に作成する可能性があります。
myFunction() と window.myFunction() は同じ関数です。
thisとは?
JavaScript では、キーワードはオブジェクトthis
を指します.
どのthis
オブジェクトがどのように呼び出されるか (使用または呼び出されるか)によって決まります。
キーワードthis
は、使用方法に応じてさまざまなオブジェクトを指します。
オブジェクトメソッドでは、オブジェクトthis を参照します。 |
単独で、グローバルオブジェクトthis を参照します。 |
関数内では、グローバルオブジェクトthis を参照します。 |
関数では、strict モードで、this はundefined . |
イベントでは、イベントを受け取った要素this を指します。 |
call() などのメソッドはapply() 、
そしてbind() はこれを任意のオブジェクトthis に参照できます。 |
グローバル オブジェクト
所有者オブジェクトなしで関数が呼び出されると、this
の値はグローバルオブジェクトになります。
Web ブラウザでは、グローバルオブジェクトはブラウザウィンドウです。
この例では、ウィンドウオブジェクトをthis
の値として返します。
関数をグローバル関数として呼び出すと、thisの値がグローバルオブジェクトになります。ウィンドウオブジェクトを変数として使用すると、プログラムが簡単にクラッシュする可能性があります。
関数をメソッドとして呼び出す
JavaScript では、関数をオブジェクトメソッドとして定義できます。
次の例では、2 つのプロパティ (firstNameとlastName)とメソッド (fullName)を持つオブジェクト (myObject)を作成します。
例
fullNameメソッドは関数です。関数はオブジェクトに属します。myObjectは関数の所有者です。
this
と呼ばれるものは、JavaScript コードを「所有」するオブジェクトです。この場合、this
の値はmyObjectです。
試してみましょう!fullNameメソッドを変更して、this
の値を返します。
例
関数をオブジェクト メソッドとして呼び出すと、this
の値がオブジェクトそのものになります。
関数コンストラクターを使用した関数の呼び出し
関数呼び出しの前にnew
キーワードが付いている場合、それはコンストラクターの呼び出しです。
新しい関数を作成したように見えますが、JavaScript 関数はオブジェクトであるため、実際には新しいオブジェクトを作成します。
例
コンストラクターの呼び出しにより、新しいオブジェクトが作成されます。新しいオブジェクトは、そのコンストラクターからプロパティとメソッドを継承します。
コンストラクター内のキーワードthis
には値がありません。this
の値は、関数が呼び出されたときに作成される新しいオブジェクトになります。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。