「JSON 对象」的类名到底叫什么?

如果 JSON 只是一种数据格式,那么「JSON 对象」的类名到底叫什么?
      let i = {
        "hello": 123
      }
      
      console.info(i.constructor.name) // Object
      
      i = new Date();
      console.info(i.constructor.name) // Date

突然很纠结这个问题。
JSON 对象输出的名称(Object)难道表示,JSON 格式的对象的名字,就是对象?

阅读 3k
2 个回答

你这里的i就是一个简单的Object罢了。。
JSON是一种独立于语言的文本格式。
JSON.stringify({a: 1})这个序列化就是用来将Object转换为JSON的。
JSON.parse('{"a": 1}')也就是将JSON进行反序列化的操作。

不存在可以实例化的一个JSON类。你能用到的JSON.stringify()也好JSON.parse()也好,都是javascript标准库里的JSON工具类,而JSON的本体,实际上是以javascript语法作为基础的文本字符串,只不过所有语种里的JSON工具类,都有能力将这个文本字符串解析为符合本语种的数据结构而已。因为JSON的核心只负责“交换”和“数据”,交换而来的数据是中立的,所以单独实例化没有意义(它的数据要给其它程序直接用的,封装既浪费内存又降低效率)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题