对象的Eval方法
Eval Method of object
假设我在javascript中有一个对象,例如:
var x = {
"var1":2,
"var2":function(){return this.var1;}
}
如何转换var x
以便将其打印为:
var x = {
"var1":2,
"var2":2
}
如果您想用这些方法的返回值替换对象的方法,可以这样做:
var x = {
var1: 2,
var2: function(){return this.var1;}
};
for(var prop in x) {
if (typeof x[prop] === "function") {
x[prop] = x[prop]();
}
}
正如其他人所指出的,您还没有提供JSON,因为函数在JSON中没有表示形式。您必须将函数表示为字符串,通过Regexp检查字符串是否为function-y,将字符串括在括号中,然后对字符串求值。还要注意的是,如果该方法使用参数,则无法指定这些参数的值,因此Regexp应该只检查没有参数的函数。这应该会奏效:
var x = {
var1: 2,
var2: "function () { return this.var1;}"
};
for(var prop in x) {
var val = x[prop].toString();
val = val.replace(/ /g, "");
if (typeof x[prop] === "function") {
x[prop] = x[prop]();
} else if (val.match(/^function'('){/i)) {
x[prop] = eval("(" + x[prop] + ")");
x[prop] = x[prop]();
}
}
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- javascript eval方法语法
- 使用 eval 从字符串创建函数的不同方法
- 使用 eval() 的替代方法
- 如何将包含在 eval 方法中的两个文件作为线程运行
- 如何在不使用 eval 的情况下使不存在的(非成员,非全局)方法可调用
- 有没有一种方法可以在JavaScript中执行类似于window.eval()的jQuery
- 在返回作为字符串参数传递的值时使用eval()的正确方法
- 我们可以在 JavaScript 中使用 eval 方法创建 HTML 标签吗?
- 利用JavaScript's eval()方法
- 是否有任何非eval方法可以创建具有运行时确定名称的函数
- 有没有一种方法可以在不进行eval的情况下输入Highchart系列数据
- 在不使用eval的情况下在方法函数中传递固定参数
- 对象的Eval方法
- Javascript,可以在没有 eval 的情况下传递未声明的方法参数
- 使用eval将变量分配给方法.否则我该怎么做
- 替换 eval() 方法
- JavaScript,在不使用eval(Revearing模式)的情况下,将私有函数作为公共方法内的字符串调用
- Javascript:有没有一种方法可以使用字符串作为回调,而不需要eval()
- 在JavaScript中,' eval '是创建具有动态确定属性的函数的唯一方法吗?