関数の引数のプロパティを関数のローカル スコープに拡張することは可能ですか? 次のコードを使用します。
function foo(a, b) {
// apply some magic here to extend arguments' properties into local scope
assert(bar == 'hello')
assert(baz == 'world')
assert(qux == 1234)
}
foo({bar: 'hello', baz: 'world'}, {qux: 1234})
が呼び出される方法foo
を制御できず、その実装のみを制御できると仮定すると、 as などのプレフィックスを不要にするためにできることはありますfoo
か?bar
a.bar
このような不自然な例では、これはおかしなことに思えるかもしれないので、全体的な目的を説明しましょう。インポートしたモジュールのメンバーの前にモジュール名を付ける必要がないように、requirejsを使用したいと考えています。例えば:
requirejs(['mod'], function(mod) {
assert(mod.blah()) // OK, normal
assert(blah()) // needs magic to work
})
これを達成しようとする理由は、論理的には 1 つのモジュールにまとめられるが、開発の便宜上の理由から、同じソース ファイル (たとえば、製品コードとテスト コード) でうまく混在しないと私が考えるいくつかのファイルがあるためです。