我有一个包含对象文字的字符串:
var literalStr = "{
a: 1,
b: function(){return 'b'}
}";
我可以从字符串创建一个对象:
var obj = eval("(" + literalStr + ")");
有没有一种简单的方法可以从对象中获取文字字符串?
我正在寻找类似的东西,JSON.stringify()
但它使用不带引号的函数和属性名称创建原始文字。
我有一个包含对象文字的字符串:
var literalStr = "{
a: 1,
b: function(){return 'b'}
}";
我可以从字符串创建一个对象:
var obj = eval("(" + literalStr + ")");
有没有一种简单的方法可以从对象中获取文字字符串?
我正在寻找类似的东西,JSON.stringify()
但它使用不带引号的函数和属性名称创建原始文字。
您正在寻找非标准toSource
方法。请注意,跨浏览器版本是不可能的,因为某些 js 引擎无法从函数中获取源字符串。
function stringify(source) {
if (typeof (source) == "object") {
var str = "{";
for (var key in source) {
var value = source[key];
str += key + ":" + stringify(value) + ",";
}
return str.substring(0,str.length-1) + "}";
}
return source.toString();
}
然后
console.log(stringify(obj));
// writes "{a:1,b:function (){return 'b'}}"