是否可以将函数参数的属性扩展到函数的本地范围?采取以下代码:
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
被调用并且我只能控制它的实现,有没有什么我可以做的事情foo
使得不需要前缀,比如bar
as a.bar
?
我意识到在这样一个人为的例子中这可能看起来很疯狂,所以让我解释一下我的总体目标。我想以这样的方式使用requirejs,我不必在导入模块的成员前面加上模块名称。例如:
requirejs(['mod'], function(mod) {
assert(mod.blah()) // OK, normal
assert(blah()) // needs magic to work
})
我尝试完成此操作的原因是,我认为我有几个文件在逻辑上属于一个模块,但出于开发方便的原因,不能很好地混合在同一个源文件中——例如,生产代码和测试代码。