如何根据JavaScript中基于字符串的表达式返回true或false?

时间:2017-08-28 21:39:13

标签: javascript

我需要根据传递给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

我将以一种非常可怕的丑陋的字符串分割方式在操作员上使用开关盒进行此操作。只是想知道是否有一种超级光滑的方式来制作这样强大的东西。

2 个答案:

答案 0 :(得分:1)

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,因为它可能不安全,因为它允许任意代码执行。

答案 1 :(得分:0)

尝试使用

eval("if (this.Homes > 0) { return true; }");