Function.apply
配列のようなオブジェクト1を関数呼び出しに適用するためにのみ使用できます。Python の「キーワード引数展開」に相当するものはなく、手動で行う必要があります。
var opts = {
dos: 'foo',
tres: 'bar',
uno: 'baz'
}
doSomething(opts.uno, opts.dos, opts.tres)
配列のようなオブジェクトから始めた場合:
var arr = ['baz', 'foo', 'bar']
doSomething.apply(window, arr)
または、2 つを組み合わせる (パラメーター シーケンスへの構成をより早く処理できるようにするため):
var arr = [opts.uno, opts.dos, opts.tres]
doSomething.apply(window, arr)
(難読化されていないコードを使用して) 2 を使用してパラメーター名を抽出し、解析を行ってから、一般的なオブジェクトを「適用」する (または適用される配列を構築する) コードを記述することは可能ですが、これは次のとおりです。 ECMAScript 仕様では直接サポートされていません。Function.toString
1配列のようなオブジェクトは、length
と という名前のプロパティを持つオブジェクトです0..length-1
。(古いバージョンの FF にはバグがありましたが、長い間修正されてきました。)
2仕様の文言 (「関数の実装依存の表現が返されます。この表現には FunctionDeclaration の構文があります..」) は、適合する ES5 実装がこの目的に使用できる出力を生成する必要があると私に信じさせます。これは実装によって異なる可能性が高く、実際にそのような使用法を調査したことはありません。