我有一组变量,我想把它作为函数的输入,然后定义它们以便在该函数中使用。
例如:
var variables = {
foo: 1,
bar: 2,
};
function doSomething (scope) {
makeLocal(scope); // I'd like something to do this
return foo + bar;
}
doSomething(variables); // should return 3
这样的事情存在吗? PHP有一个名为extract的工具,我希望JavaScript存在类似的东西。我知道我可以向window
添加属性,但如果可能的话,我宁愿不污染我的全局命名空间。
答案 0 :(得分:2)
JavaScript没有任何PHP提取的等价物。获得某些东西的一种方法是在调用makeLocal()
时绑定当前上下文并将变量分配给:
var variables = {
foo: 1,
bar: 2,
};
function makeLocal(scope){
for(var key in scope){
this[key] = scope[key];
}
}
function doSomething (scope) {
makeLocal.call(this, scope);
return foo + bar;
}
这样做的缺点是如果doSomething()
没有上下文,它将是全局对象(浏览器中的窗口),并且您的变量会污染全局范围。
答案 1 :(得分:0)