嘿,我试图将特定的javascript对象转换为String.到目前为止,我正在使用json2.js.只有我的对象包含函数,这些函数才会被剥离.我需要一种转换功能的方法,任何想法?
firefox中的函数有一个toString()方法,但如何使用json2.js?
its*_*ony 35
实际上,我认为这是可能的,也很容易.至少在使用nodeJS做jsonP时,它对我很有用,并且可以通过以下小提琴来证明.我只是通过向函数添加字符串来实现:
var anyString = '';
var aFunction = function() { return true; };
var functionToText = anyString + aFunction;
console.log(functionToText);
Run Code Online (Sandbox Code Playgroud)
这是小提琴:http://jsfiddle.net/itsatony/VUZck/
Mil*_*dfx 20
使用String()函数http://www.w3schools.com/jsref/jsref_string.asp
var f = function(a, b){
return a + b;
}
var str = String(f);
Run Code Online (Sandbox Code Playgroud)
简短的回答是,您无法将任意JavaScript函数转换为字符串.期.
有些运行时非常友好,可以为您定义函数的字符串序列化,但ECMAScript语言规范并不要求这样做.您提到的"toString()"示例是一个很好的示例,说明为什么无法完成 - 代码内置于解释器中,实际上可能无法在JavaScript中实现(而是实现运行时的语言)!还有许多其他函数可能具有相同的约束(例如构造函数,内置函数等).
使用以下函数将 obj 转换为 str :
function convert(obj) {
let ret = "{";
for (let k in obj) {
let v = obj[k];
if (typeof v === "function") {
v = v.toString();
} else if (v instanceof Array) {
v = JSON.stringify(v);
} else if (typeof v === "object") {
v = convert(v);
} else {
v = `"${v}"`;
}
ret += `\n ${k}: ${v},`;
}
ret += "\n}";
return ret;
}
Run Code Online (Sandbox Code Playgroud)
const input = {
data: {
a: "@a",
b: ["a", 2]
},
rules: {
fn1: function() {
console.log(1);
}
}
}
const output = convert(input)
Run Code Online (Sandbox Code Playgroud)
`{
data: {
a: "@a",
b: ["a", 2]
},
rules: {
fn1: function() {
console.log(1);
}
}
}`
// typeof is String
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30905 次 |
| 最近记录: |