是否可以將函數參數的屬性擴展到函數的局部範圍?看看下面的代碼:是否可以將Javascript函數參數的屬性擴展到本地範圍?
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
爲a.bar
?
我意識到在這樣一個人爲的例子中,這可能看起來很瘋狂,所以讓我解釋一下我的總體目標。我想以這樣一種方式使用requirejs,以便我不必在模塊名稱前面輸入模塊的成員。例如:
requirejs(['mod'], function(mod) {
assert(mod.blah()) // OK, normal
assert(blah()) // needs magic to work
})
我之所以試圖做到這一點的是,我有一個在我看來,在邏輯上在單一模塊中屬於一起的幾個文件,但爲了方便對發展的原因並不在同一個源拌勻文件 - 例如生產代碼和測試代碼。
啊,有趣的 - 我會研究'延長'。至於使用構建工具,我寧願不要。 – 2013-02-11 18:32:43
好的,使用'extend'可以在*'a'和'b'之外很好地運行代碼*,但是我想要的是*'a'內部的代碼*能夠在沒有前綴的情況下使用'b'中的東西,對於stuff *裏面*'b'能夠使用沒有前綴的'a'中的東西。 – 2013-02-11 18:52:29
呃,只有在相同範圍內纔有可能。你真的應該找一個能自動合併這兩個文件的工具。 – Bergi 2013-02-11 18:55:13