JavaScript ファンクションの呼び出し
- 前のページ JS ファンクション パラメータ
- 次のページ JS ファンクション Call
JavaScript関数内のコードは「何か」がそれを呼び出したときに実行されます。
JavaScript関数を呼び出す
関数が定義のとき、関数内のコードは実行されません。
関数が呼び出しのとき、関数内のコードが実行されます。
関数を呼び出すことは、通常「関数を起動する」や「関数を実行する」とも言えます。
このチュートリアルでは、私たちは「呼び出し。
関数を関数として呼び出す
インスタンス
function myFunction(a, b) { return a * b; } myFunction(10, 2); // 返り値は20になります
以上の関数はどのオブジェクトにも属しませんが、JavaScriptでは常にデフォルトのグローバルオブジェクトが存在します。
HTMLでは、デフォルトのグローバルオブジェクトはHTMLページ自体であり、上のすべての関数はHTMLページに「属する」です。
ブラウザで、このページオブジェクトはブラウザのウィンドウです。上の関数は自動的にウィンドウ関数になります。
myFunction() と window.myFunction() は同じ関数です:
インスタンス
function myFunction(a, b) { return a * b; } window.myFunction(10, 2); // 20 も返却します
これは関数を呼び出す一般的な方法ですが、良い習慣ではありません。
グローバル変数、メソッド、または関数は、グローバルオブジェクト内で名前の衝突や脆弱性を引き起こしやすくなります。
this キーワードと呼ばれます
JavaScript では、 this
のものは、現在のコードを「所有」するオブジェクトを指します。
this
の値は、関数内で使用される際には「所有」その関数のオブジェクトです。
注意してください this
これは変数ではありません。これはキーワードです。変更することはできません。 this
の値です。
グローバルオブジェクト
所有者オブジェクトなしでオブジェクトを呼び出すと、this
の値がグローバルオブジェクトになります。
Web ブラウザでは、グローバルオブジェクトはブラウザオブジェクトです。
この例では、 this
の値を返却します:
インスタンス
var x = myFunction(); // x は window オブジェクトになります function myFunction() { return this; }
関数をグローバル関数として呼び出すと、 this
の値がグローバルオブジェクトになります。
window オブジェクトを変数として使用すると、プログラムがクラッシュすることがあります。
関数をメソッドとして呼び出す
JavaScript では、関数をオブジェクトメソッドとして定義できます。
以下の例では、オブジェクト(myObject)を生成し、2つの属性(firstName と lastName)および1つのメソッド(fullName)を持つことを示しています:
インスタンス
var myObject = { firstName: "Bill", lastName: "Gates", fullName: function () { return this.firstName + " " + this.lastName; } } myObject.fullName(); // 返却します "Bill Gates"
fullName メソッドは関数です。この関数はオブジェクトに属しています。myObject は関数の所有者です。
と呼ばれます this
のものは、「所有」この JavaScript コードのオブジェクトです。この例では、this
の値は myObject です。
テストしてみましょう!この fullName メソッドを変更して返却する this
の値:
インスタンス
var myObject = { firstName: "Bill", lastName: "Gates", fullName: function () { return this; } } myObject.fullName(); // 返却します [object Object](所有者オブジェクト)
オブジェクトメソッドとしてファンクションを呼び出すと、 this
の値はオブジェクト自体になります。
ファンクションコンストラクタを通じてファンクションを呼び出す方法
ファンクション呼び出しの前に new
キーワードがあれば、これはコンストラクタ呼び出しです。
これは新しいファンクションを作成するように見えますが、JavaScript ファンクションはオブジェクトであるため、実際には新しいオブジェクトを作成しています:
インスタンス
// これはファンクションコンストラクタです: function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } // 新しいオブジェクトが作成されました: var x = new myFunction("Bill", "Gates"); x.firstName; // "Bill" が返されます"
コンストラクタの呼び出しは新しいオブジェクトを作成します。新しいオブジェクトはそのコンストラクタから属性とメソッドを継承します。
コンストラクタ内の this
キーワードには値はありません。
this
の値は、ファンクションが呼び出されたときに作成される新しいオブジェクトになります。
- 前のページ JS ファンクション パラメータ
- 次のページ JS ファンクション Call