すべてのオブジェクトは関数 (コンストラクター) によって作成されます。
---------------------------------------- 関数もオブジェクトです- --------------------------------------
関数もクラスを通じて作成され、関数オブジェクトは Function を通じて作成されます。
関数は特殊なオブジェクトであり、関数の宣言は参照データ型です。
--------------------------------------Function クラスを使用して関数を作成する----- -----------------------------
new Function()//作成可能な匿名オブジェクト
-------------------------------------- Function クラスを使用してオブジェクトを作成する ----- ---------------------------------
関数はオブジェクトであり、オブジェクトは順序付けされていないプロパティのコレクションです
よく使用される属性: 引数、長さ、名前: "anonymous"
プロトタイプ オブジェクトで: バインド呼び出しを適用します。
1: CALL メソッド
----------------------------呼び出しメソッドの事前理解-------------- - ----
1) call は関数のプロトタイプ オブジェクトのメソッドです。
2) function.call、この関数を呼び出すことができます
3) f.call () f の this はウィンドウを意味します (括弧は空で、これはウィンドウを指します)
4) f.call(obj) f の this は obj を意味します (obj は括弧内にあり、オブジェクトを指します)
obj経由でf関数を呼び出すにはどうすればよいですか?
方法 1: 関数を obj の属性として使用し、obj にハングします。
方法 2: この関数を obj の属性にしない場合。オブジェクトを削除します。属性
方法 3: call メソッドを使用します。f.call(obj) (obj が f メソッドを借用し、f メソッドの this が obj を指すことを示します)
呼び出しメソッドの深い理解
f.call(obj):
2 つのことを示します: f 関数を実行し、これを obj にポイントさせます。
f.call の目的は、f を実行して f の this ポイントを変更させることです。そのため、js の this ポイントは動的であり、呼び出しを通じて変更できます。
// fn() この中の this はウィンドウを表します
// fn.call(); // fn のこれはウィンドウを意味します
// fn.call(123) // fn のこれは数値 {123} を意味します
// fn.call("hello") // fn のこれは String {"hello"} を意味します
// fn.call(true) // fn のこれはブール値 {true} を意味します
// fn.call({}) // {}
//obj={名前:"xxx"}にしてみましょう
fn.call(obj)//{名前:"xxx"}
呼び出しメソッドの他のパラメータについての深い理解
call メソッドは、call メソッドの 2 番目のパラメータから開始してパラメータ リストを表すパラメータの受け渡しをサポートします。
例: r=fn.call(obj,1,2) とします。
コンソール.ログ(r)
要約:
1) call は関数プロトタイプ オブジェクトの属性です。
2) 任意の関数を .call にできます。
3) 関数が呼び出されると、その関数が実行され、関数内の this は呼び出し内の最初の実パラメータを指します。
4) call メソッドに実際のパラメータがない場合も実行できますが、関数内ではこれはウィンドウを意味します。
5) 最初のパラメータが null の場合、非厳密モードでは、これは関数内でウィンドウを意味し、厳密モードでは null を意味します。
6) 関数 .call() を実行すると必ず関数が実行され、関数にパラメータを渡すことができますが、call の第 2 パラメータからこの関数に渡されます。