ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 関数呼び出しで名前付きパラメーターをシミュレートするにはどうすればよいですか?

JavaScript 関数呼び出しで名前付きパラメーターをシミュレートするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-06 00:51:09156ブラウズ

How Can I Simulate Named Parameters in JavaScript Function Calls?

JavaScript 関数呼び出しでの名前付きパラメーターのシミュレーション

C# などのプログラミング言語では、名前付きパラメーターを使用してパラメーター名を指定することで、明確かつ簡潔な関数呼び出しが可能になります。彼らの価値観と一緒に。ただし、JavaScript は本質的にこの機能を提供しません。ただし、同様の効果を達成する方法があります。

ES2015 以降: パラメータの構造化

ES2015 の導入により、パラメータの構造化には組み込みメカニズムが提供されます。名前付きパラメータをシミュレートします。この機能を使用すると、関数はオブジェクトを引数として受け入れ、特定のプロパティを名前付きパラメータとして抽出できます:

function myFunction({ param1, param2 } = {}) {
  // ...function body...
}

呼び出し側は、目的のパラメータ値を持つオブジェクトを渡すことができます:

myFunction({ param1: 70, param2: 175 });

ES5: Function.prototype.toString とオブジェクトの関連付け

ES5 では、ハッキングこのメソッドでは、Function.prototype.toString() を使用して関数シグネチャを解析し、パラメーター名を識別します。これにより、オブジェクトのプロパティを対応するパラメータに関連付けることができます:

var func = parameterfy(function(a, b, c) {
  console.log('a is ' + a, ' | b is ' + b, ' | c is ' + c);     
});

func(1, 2, 3); // a is 1  | b is 2  | c is 3
func(1, {b:2, c:3}); // a is 1  | b is 2  | c is 3

ただし、このアプローチには欠点があります:

  • 最後の引数がオブジェクトの場合、それが処理されます「名前付き引数オブジェクト」として。
  • 関数は常に、未定義の値を含むすべての定義された引数を受け取ります。

追加の考慮事項

関数ラッパーを作成する代わりに、関数と追加の引数を受け入れる関数を作成したり、関数を拡張したりすることもできます。名前付きパラメータを使用した関数の実行をサポートするプロトタイプ。

以上がJavaScript 関数呼び出しで名前付きパラメーターをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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