ユーザーが特定のオブジェクトで動作する独自のフォーマット関数を作成できるようにしたいと考えています。私はそれを行う2つの方法を見つけましたが、その機能がハッキングできるかどうかはわかりません. nodeJS 内で実行されます。
//First way with eval (evil ?)
function convertObj(formula) {
return function (obj) {
return eval(formula);
};
}
// Second way with function (same as eval ?)
function convertObj2(formula) {
return new Function("obj", "return " + formula);
}
var inst = {
"name": "BOB",
"age": "30"
};
var formula = "obj.name.toLowerCase() + ' is ' + obj.age + ' years old'";
var next = convertObj(formula);
var next2 = convertObj2(formula);
document.write('<p>' + next(inst) + '</p>');
document.write('<p>' + next2(inst) + '</p>');
印刷する
bob is 30 years old
bob is 30 years old