我有一个包含对象文字的字符串:
var literalStr = "{
a: 1,
b: function(){return 'b'}
}";
我可以从字符串中创建一个对象:
var obj = eval("(" + literalStr + ")");
有没有一种简单的方法可以从对象中获取文字字符串?
我正在寻找像JSON.stringify()
这样的东西但是它创建了原始文字,其中包含没有引号的函数和属性名称。
答案 0 :(得分:1)
您正在寻找非标准的toSource
method(s)。请注意,跨浏览器版本是不可能的,因为某些js引擎不能从函数中获取源字符串。
答案 1 :(得分:0)
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'}}"