以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
21. 手写JSON.stringify()
function myStringify(obj) {
// your code here
}
举个例子:
const obj = {
message: "hello, world",
count: 10,
nested: {
flag: true,
array: [1, 2, 3]
}
};
console.log(myStringify(obj));
// expect output:
// '{"message":"hello, world","count":10,"nested":{"flag":true,"array":[1,2,3]}}'
另外一个例子:
const obj1 = {
prop1: "hello",
prop2: "BFE",
toString() {
return `${this.prop1} ${this.prop2}`
}
}
const obj2 = {
a: obj1,
b: [obj1, obj1],
c: {
d: obj1,
e: [obj1, obj1]
}
}
obj1.self = obj1
obj2.f = obj2
console.log(myStringify(obj2))
// expect output:
// {"a":"hello BFE","b":["hello BFE","hello BFE"],"c":{"d":"hello BFE","e":["hello BFE","hello BFE"]},"self":"[Circular ~]","f":"[Circular ~]"}
要求:
- 不得使用
JSON.stringify()
- 不得使用
eval()
等求值函数 - 不得修改原有的结构体
提示:
- JSON 中的 Object 与 JavaScript 中的 Object 不一样,JSON 中不允许有函数、不允许有循环引用
- 可以使用递归
- 使用 RegExp 判断类型时须考虑全面