gpt4 book ai didi

javascript - 数组到动态函数: Use eval or not?

转载 作者:行者123 更新时间:2023-12-03 11:44:34 26 4
gpt4 key购买 nike

拥有这个对象:

// Better as array, thank you for the advice @user2864740
var rule = [
['User', null],
['filter', [{ idgroup: 95, active: true}],
['order_by', ['name', 'created']]
];

我想基于上面的对象创建一个函数。我只知道两种方法。第一个是使用 eval 并制作函数文字:

eval("User.filter({ idgroup: 95, active: true }).order_by('name', 'created')");

另一种方式更复杂,我还不知道如何处理它。但结果应该是这样的(显然带有 for/while):

this['User']['filter'].apply(this['User'], [{ idgroup: 95, active: true }])['order_by'].apply(this['User'], ['name', 'created']);

是否值得编写一个动态函数来调用该函数作为第二个选项,或者 eval 是否足够快来解决这个问题?

最佳答案

可以这样写:

var rules = [ /* the set of rules */ ];

// Or whatever the first rule will invoked upon
var result = this;

// Apply each rule in turn
rules.forEach(function (rule) {
var prop = rule[0];
var value = rule[1];
if (value === null) {
// Property look-up only
result = result[prop];
} else {
// Call the function with the same name and apply rule arguments
result = result[prop].apply(result, value);
}
});

// Use result:
console.log(result);

更复杂的规则描述符将需要更复杂的处理。

关于javascript - 数组到动态函数: Use eval or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26111564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com