ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 関数の属性とメソッド_JavaScript スキルに関する簡単な説明

JavaScript 関数の属性とメソッド_JavaScript スキルに関する簡単な説明

WBOY
WBOYオリジナル
2016-05-16 16:18:46873ブラウズ

各関数には、長さとプロトタイプという 2 つのプロパティが含まれています
長さ: 現在の関数が受け入れることを希望する名前付きパラメータの数
プロトタイプ: それは彼らのすべての強さのメソッドを保存する本当の場所です

コードをコピーします コードは次のとおりです:

関数sayName(名前) {
アラート(名前);
}
関数 sum(num1, num2) {
return num1 num2;
}
関数sayHi() {
alert("こんにちは");
}
alert(sayName.length);//1 パラメータの数は 1 つです
alert(sum.length);//2 パラメータの数: 2
alert(sayHi.length);//0 パラメーターなし

各関数には、apply() と call() という 2 つの非継承メソッドが含まれています
これら 2 つのメソッドは、特定のスコープ内の関数を呼び出します。これは、実際には関数本体
でこのオブジェクトの値を設定するのと同じです。 まず、apply() は 2 つのパラメーターを受け入れます。1 つは関数が実行されるスコープで、もう 1 つはパラメーター配列 (配列インスタンスまたは引数オブジェクトにすることができます)

コードをコピーします コードは次のとおりです:

関数 sum(num1, num2) {
return num1 num2;
}
関数 callSum1(num1, num2) {
return sum.apply(this, argument);//引数オブジェクトを渡します
}
関数 callSum2(num1, num2) {
return sum.apply(this, [num1, num2]);
}
alert(callSum1(10, 10));//20
alert(callSum2(10, 20));//30

次に、call メソッドの最初のパラメーターは変更されていません。変更された点は、残りのパラメーターはすべて、関数に渡されるパラメーターを 1 つずつリストする必要があることです。

コードをコピーします コードは次のとおりです:

関数 sum(num1, num2) {
return num1 num2;
}
function callSum(num1, num2) {
return sum.call(this, num1, num2);
}
アラート(callSum(10, 200));

どちらの方法がより便利であるかは、すべてあなたの希望次第です。パラメータがない場合はどちらを使用しても同じになります。
ただし、apply メソッドと call メソッドは、ハル パラメータを取得するためだけのものではありません。
彼らの武道の本当の使い方は、機能の拡張にあります。

コードをコピー コードは次のとおりです:

window.color = "red";
var o = {color: "blue"};
関数sayColor() {
アラート(this.color);
}
sayColor();//red
sayColor.call(this);//red
sayColor.call(window);//red
sayColor.call(o);//blue

apply と call を使用してスコープを拡張する最大の利点は、メソッドとの結合関係が必要ないことです。

ECMAScript5 では、bind() メソッドも定義されています。このメソッドは、この値がバインド関数

に渡される値にバインドされる関数のインスタンスを作成します。

コードをコピーします コードは次のとおりです:

window.color = "赤";
var o = {color: "blue"};
関数sayColor() {
アラート(this.color);
}
varbindFun =sayColor.bind(o);
bindingFun();//blue

以上がこの記事の全内容です。気に入っていただければ幸いです。

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