以下为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 = obj1obj2.f = obj2console.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 判断类型时须考虑全面