ホームページ  >  記事  >  ウェブフロントエンド  >  JS 関数呼び出しと暗黙的なパラメーター引数に関連する問題とこれ

JS 関数呼び出しと暗黙的なパラメーター引数に関連する問題とこれ

一个新手
一个新手オリジナル
2017-09-28 09:21:401388ブラウズ

##1. 関数を呼び出すいくつかの方法:
###1. 関数として呼び出す、オブジェクトを呼び出す、オブジェクト指向プログラミングをサポートする
## ##3. 新しいオブジェクトを作成するコンストラクターとして呼び出します
####4. apply() または call() メソッドを介して呼び出します。このメソッドは比較的複雑です

## 2. 関数 各呼び出しは次のようになります。 2 つの暗黙的なパラメータを渡し、関数のスコープ内に存在します: 引数と this###関数パラメータと仮パラメータ間の不一致に対処する方法:
####1. 実際のパラメータ > 仮パラメータ --> 一部を超えました実パラメータは割り当てられません
####2. 実パラメータ 対応する仮パラメータは未定義として割り当てられません

###3。 関数コンテキストに依存します。呼び出しメソッド (4 つの呼び出しメソッド)。

####2. 引数: すべてのパラメータのコレクションであり、arguments[2] などを使用して取得できる長さ属性がありますが、引数は配列ではなく、配列を持たないメソッドです。 3. これ: 関数呼び出しに暗黙的に関連付けられているオブジェクトを関数コンテキストと呼びます
## 4:

###1. 「関数として呼び出す」: 上記の最初のメソッドを指します他と違う4つのメソッド 3種類

例: function test(a,b){}/var test = function(a,b){}

この時の関数コンテキストはwindow、つまり* *this==window**#### 2. 「メソッドとして」呼び出す: 関数がオブジェクトに割り当てられ、関数を参照するこの属性を使用する場合
I。これをメソッド本体に入れて呼び出す

var o = {};
o.test = function(){};
o.test();

この時の関数コンテキストはオブジェクトo、つまり**this==o**



###3をコンストラクタとして呼び出します。 " call: 関数宣言と同じですが、関数の呼び出し方とは異なり、関数呼び出しの前に new キーワードを使用します

function test(){return this};

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;

#### apply() メソッドと call() メソッド: 任意のオブジェクトを関数として明示的に指定します
apply() には 2 つのパラメーターが必要です: 1. 関数コンテキストとしてのオブジェクト 2. 関数パラメーターで構成される配列
call() にも 2 つのパラメーターが必要です: 違いは、2 番目のパラメーターがパラメーター リストであることです

##任意の要素をコンテキストとして使用できますapply() と call()

以上がJS 関数呼び出しと暗黙的なパラメーター引数に関連する問題とこれの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。