最新のWeb開発のチュートリアル
×

JS チュートリアル

JS HOME JS 導入 JS どこへ JS 輸出 JS 構文 JS ステートメント JS 注釈 JS 変数 JS 演算子 JS 算術 JS 割り当て JS データの種類 JS 機能 JS オブジェクト JS 範囲 JS イベント JS ストリング JS 文字列メソッド JS 数字 JS 数のメソッド JS 数学 JS 日付 JS 日付形式 JS 日付の方法 JS 配列 JS アレイ方式 JS ブール値 JS 比較 JS 条件 JS スイッチ JS ループ For JS ループしながら JS ブレーク JS 型変換 JS 正規表現 JS エラー JS デバッギング JS 巻き上げ JS strictモード JS スタイルガイド JS ベストプラクティス JS 間違い JS パフォーマンス JS 予約語 JS JSON

JS フォーム

フォームバリデーション フォームAPI

JS オブジェクト

オブジェクト定義 オブジェクトのプロパティ オブジェクトメソッド オブジェクトプロトタイプ

JS 機能

関数定義 ファンクションのパラメータ 関数の呼び出し 関数クロージャ

JS HTML DOM

DOM イントロ DOM メソッド DOM 資料 DOM 要素 DOM HTML DOM CSS DOM アニメーション DOM イベント DOM EventListener DOM ナビゲーション DOM ノード DOM ノードリスト

JS ブラウザ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS

JS 例 JS HTML DOM JS HTML 入力 JS HTML オブジェクト JS HTML イベント JS ブラウザ JS クイズ JS 概要

JS リファレンスマニュアル

JavaScript オブジェクト HTML DOM オブジェクト


 

JavaScript関数の呼び出し


JavaScript関数は、4種類の方法で呼び出すことができます。

各メソッドは、どのように異なりthis初期化されます。


thisキーワード

JavaScriptでは、というものthis 、現在のコードを「所有する」ことを目的とします。

値はthis関数で使用される場合、機能を「所有する」ことが目的です。

ことに注意してくださいthis変数ではありません。 それはキーワードです。 あなたは、の値は変更することはできませんthis


JavaScript関数を呼び出します

あなたは既に「何かが」それを呼び出すときにJavaScript関数内のコードが実行されることを学びました。

関数が定義されている場合関数のコードは実行されません。 関数が呼び出されたときにそれが実行されます。

一部の人々は、用語「 関数を呼び出す 」の代わりに「 関数を呼び出す」を使用ます。

また、「機能を実行する ""機能を起動する "、"関数を呼び」、または言って非常に一般的です。

JavaScript関数が呼び出されずに呼び出すことができますので、このチュートリアルでは、我々は、 呼び出しを使用ます。


機能としての機能を呼び出します

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // myFunction(10, 2) will return 20
»それを自分で試してみてください

上記の関数は、任意のオブジェクトに属していません。 しかし、JavaScriptでデフォルトのグローバルオブジェクトが常にあります。

HTMLではデフォルトのグローバルオブジェクトは、HTMLページ自体であるので、上記の機能は、HTMLページに「属しています」。

ブラウザでページオブジェクトは、ブラウザのウィンドウです。 上記の機能が自動的にウィンドウ関数となります。

myFunction()window.myFunction()同じ機能です。

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) will also return 20
»それを自分で試してみてください

これは、JavaScript関数を呼び出すための一般的な方法ではなく、非常に良い習慣です。
グローバル変数、メソッド、または機能が簡単にグローバル・オブジェクト内の名前の競合やバグを作成することができます。


グローバルオブジェクト

関数は所有者オブジェクトなしで呼び出されたとき、の値thisグローバルオブジェクトになります。

Webブラウザではグローバルオブジェクトは、ブラウザのウィンドウです。

この例では、の値としてウィンドウオブジェクトを返しますthis

function myFunction() {
    return this;
}
myFunction();                // Will return the window object
»それを自分で試してみてください

グローバル関数としての機能を呼び出し、値引き起こしthisグローバルオブジェクトであることを。
変数としてウィンドウオブジェクトを使用すると、簡単にプログラムをクラッシュさせることができます。


メソッドとして関数を呼び出します

JavaScriptでは、あなたは、オブジェクトのメソッドとして関数を定義することができます。

次の例では、オブジェクト(作成myObject二つの特性(と、) firstNamelastName )、およびメソッド( fullName ):

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // Will return "John Doe"
»それを自分で試してみてください

fullNameメソッドは関数です。 この関数はオブジェクトに属します。 myObject関数の所有者です。

ものthis 、JavaScriptコードを「所有する」ことを目的とします。 この場合の値でthisあるmyObject

それをテスト! 変更fullNameの値を返すための方法をthis

var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // Will return [object Object] (the owner object)
»それを自分で試してみてください

オブジェクトメソッドとしての機能を呼び出し、値引き起こしthisオブジェクト自体であることを。


Functionコンストラクタで関数を呼び出します

関数呼び出しがで先行している場合はnewキーワード、それは、コンストラクタの呼び出しです。

あなたは新しい関数を作成するように見えますが、JavaScript関数を使用すると、実際に新しいオブジェクトを作成するオブジェクトであるため。

// This is a function constructor:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}

// This creates a new object
var x = new myFunction("John","Doe");
x.firstName;                             // Will return "John"
»それを自分で試してみてください

コンストラクタ呼び出しは、新しいオブジェクトを作成します。 新しいオブジェクトは、そのコンストラクタからプロパティとメソッドを継承します。

thisコンストラクタでキーワードが値を持っていません。
値はthis関数が呼び出されたときに作成された新しいオブジェクトになります。


関数法と機能を呼び出します

JavaScriptでは、関数はオブジェクトです。 JavaScriptの関数は、プロパティとメソッドを持っています。

call()と、 apply()事前定義されたJavaScript関数法です。 どちらの方法は、関数を呼び出すために使用することができ、両方の方法は、最初のパラメータとして所有者オブジェクトを持っている必要があります。

function myFunction(a, b) {
    return a * b;
}
myObject = myFunction.call(myObject, 10, 2);     // Will return 20
»それを自分で試してみてください

function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // Will also return 20
»それを自分で試してみてください

どちらの方法は、最初の引数として所有者オブジェクトを取ります。 唯一の違いは、ということですcall()個別に関数の引数をとり、 apply()配列内の関数の引数を取ります。

JavaScriptのstrictモードでは、最初の引数は、の値になりthis引数がオブジェクトでない場合であっても、呼び出される関数の中で。

最初の引数の値がnullまたは未定義の場合は「非厳密」モードでは、それはグローバルオブジェクトに置き換えられます。

call()またはapply()次の値を設定することができthis 、既存のオブジェクトの新しい方法としての機能を呼び出します。