我需要根据传递到 json 对象的字符串值创建动态验证器。假设您有以下字符串:
var required: "Homes > 0"
在此示例中,“Homes”是我的函数中的一个可访问对象。我想从逻辑上把上面的变成:
if (this.Homes > 0) { return true; }
分部分思考这个问题:
if (this[left] > parsed[right]) { return true; }
我想你明白了。我不确定是否有一种方法可以轻松提取运算符,而无需为每种类型进行切换?如:
required: "Homes = 0" // this[Left] === 0
我将通过操作符上的 switch case 以一种非常可怕、丑陋的字符串分割方式来完成此操作。只是想知道是否有一种 super 巧妙的方法可以使这样的东西变得强大。
最佳答案
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
eval('Homes > 0');
但请考虑改用此模式:
function Class(){
this.validate = function(){
return true;
}
}
var x = new Class();
//overload the validate operator
x.validate = function(){
return false;
}
您希望避免 eval,因为它可能不安全,因为它允许任意代码执行。
关于javascript - 如何根据 JavaScript 中基于字符串的表达式返回 true 或 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45927725/