ホームページ > 記事 > ウェブフロントエンド > JS 関数呼び出しと暗黙的なパラメーター引数に関連する問題とこれ
##1. 関数を呼び出すいくつかの方法:
###1. 関数として呼び出す、オブジェクトを呼び出す、オブジェクト指向プログラミングをサポートする
## ##3. 新しいオブジェクトを作成するコンストラクターとして呼び出します
####4. apply() または call() メソッドを介して呼び出します。このメソッドは比較的複雑です
## 2. 関数 各呼び出しは次のようになります。 2 つの暗黙的なパラメータを渡し、関数のスコープ内に存在します: 引数と this###関数パラメータと仮パラメータ間の不一致に対処する方法:
####1. 実際のパラメータ > 仮パラメータ --> 一部を超えました実パラメータは割り当てられません
####2. 実パラメータ 対応する仮パラメータは未定義として割り当てられません
####2. 引数: すべてのパラメータのコレクションであり、arguments[2] などを使用して取得できる長さ属性がありますが、引数は配列ではなく、配列を持たないメソッドです。 3. これ: 関数呼び出しに暗黙的に関連付けられているオブジェクトを関数コンテキストと呼びます
## 4:
###1. 「関数として呼び出す」: 上記の最初のメソッドを指します他と違う4つのメソッド 3種類
この時の関数コンテキストはwindow、つまり* *this==window**#### 2. 「メソッドとして」呼び出す: 関数がオブジェクトに割り当てられ、関数を参照するこの属性を使用する場合
I。これをメソッド本体に入れて呼び出す
var o = {}; o.test = function(){}; o.test();この時の関数コンテキストはオブジェクトo、つまり**this==o**
###3をコンストラクタとして呼び出します。 " call: 関数宣言と同じですが、関数の呼び出し方とは異なり、関数呼び出しの前に new キーワードを使用します
new test();
####I. 新しい空のオブジェクトを作成します
####II. コンストラクターのオブジェクトはこのオブジェクトとなり、コンストラクターのコンテキストになります
####III.明示的な戻り値がない場合、新しく作成されたオブジェクトがコンストラクターの戻り値として返されます
function Ninja(){ this.skulk = function(){return this}; //无显式返回,故返回this===o }===function Ninja(){ var o = {}; o.skulk = function(){return this;}; return o; } var ninja1 = new Ninja(); var ninja2 = new Ninja(); ninja1.skulk === ninja1; ninja2.skulk === ninja2;
以上がJS 関数呼び出しと暗黙的なパラメーター引数に関連する問題とこれの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。