私は最近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ステートメントを使用するか、パラメーターの数が非常に多くなる可能性のある関数を使用するかです。
誰かがより良い解決策を持っていない限り...?
ありがとう!マットミューラー