2022-12-11【技术】js数组使用JSON.stringify和toString的区别

var arr = [1,2,3,4];
console.log(arr.toString()); // 1,2,3,4
console.log(JSON.stringify(arr)); // [1,2,3,4]
arr.toString()是将数组转化成字符串,因此不带 [ ]

一、toString方法

toString方法的三个作用:
1.返回一个【表示对象】的【字符串】
2.检测对象的类型
Object.prototype.toString.call(arr)==="[object Array]"
3.返回该数字对应进制的字符串。
console.log(10.toString(2)) //10专为为2进制'1010'
在js中包含2进制,8进制,10进制,18进制。

返回一个【表示对象】的【字符串】

Object.prototype.toString()
1.toString是属于Object原型上的一个方法。
  每一个对象都有一个 toString()方法。
  默认的情况下,toString()方法被每一个对象继承。
  如果toString没有被定义的对象覆盖。toString返回 '[object type]'
  其中type是对象的类型,type的值可以是Object,

代码
class Person{
  constructor(name,age){
    this.name=name
    this.age=age
  }
}
let zs=new Person('张三',18)
console.log( zs.toString() ) // [object Object]
通过上面的输出语句,我们可以确定。
返回来的确实是返回一个【表示对象】的【字符串】

自定义的toString()

2. 我们也可以定义一个方法 去覆盖默认的toString方法。
   自定义的toString()方法不能够传入参数,并且必须返回一个字符串。
   定义的toString可以返回我们任何需要的值,
   如果他能够附带任何有关对象的信息,他将变成非常有用

代码如下
class Person{
  constructor(name,age){
    this.name=name
    this.age=age
  }
  // 重写Object.prototype.toString()
  toString(){
    return `Person{name=${this.name},age=${this.age}}`
  }
}
let zs=new Person('张三',18)
console.log( zs.toString() ) //Person{name=张三,age=18}

JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要.
1. Array的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为
2.Boolean 如果布尔值是true,则返回"true"。否则返回"false""。
3.Date 返回日期的文本表示。

二、JSON.stringify(arr)方法

而JSON.stringify(arr)是从一个对象解析出JSON字符串,是带[]的

另外JSON.parse() 是用于从一个字符串中解析出json对象

var str = '{"name":"huangxiaojian","age":"23"}'
结果:
JSON.parse(str)
JSON.parse方法

JSON对象有两个方法:stringify()和parse()。
在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串 和 把JSON字符串解析为原生JavaScript。例如:

let a={
title:"JavaScript高级程序设计",
authors:[
"Nicholas C. Zakas"
],
edition:3,
year:2011
};
console.log(a)
var jsonBook=JSON.stringify(a);
var objectBook=JSON.parse(jsonBook);
console.log(jsonBook)
console.log(objectBook)
image.png

你可能感兴趣的:(2022-12-11【技术】js数组使用JSON.stringify和toString的区别)