我最近在 JS 中做了很多模板,所以我总是遇到“邪恶”的with
说法。
它使模板更容易使用,因为您不必在变量前面加上对象。
听说 with 语句不好,而且它们可能导致性能不佳,我开始寻求另一种解决方案:
我的解决方案:带有一堆参数的函数
这是我的代码:
var locals = {
name : "Matt",
email : "wahoo@wahoo.com",
phone : "(555) 555-5555"
};
var keys = [];
var values = [];
for (key in locals) {
local = locals[key];
keys.push(key)
values.push(local);
}
keys = keys.join(',');
var fn = new Function(keys, "**TEMPLATE STUFF**"); // function(name, email, phone) {...}
fn.apply(this, values); // fn("Matt","wahoo@wahoo.com","(555) 555-5555")
注意:这些完成完全相同的事情。两者都是从任何人那里抽象出来的,所以一个令人讨厌的长参数列表并不是什么大问题。
我想知道哪个更好:使用 with 语句或可能包含大量参数的函数。
除非有人有更好的解决方案......?
谢谢!马特·穆勒