558 对象转换为字符串、数字

* 创建一个变量值两种方式

* 1.字面量

* 2.构造函数

* 对于基本类型来说,第一种方式创建的是 值类型,第二种方式创建的是 引用类型,但是不论哪一种类型都是当前类的一个实例。

* 把一个对象转换为字符串、数字:

​ 1.先调用其valueOf这个方法,如果返回了对应的原始值(值类型), 接下来会基于原始值进行相关的操作

​ 2.如果没有对应的原始值,才去调用toString

​ 3.Number、String、Boolean、Symbol、BigInt这些类的原型上都有自己的valueOf方法,可以获取原始值[[PrimitiveValue]]

​ 4.基本上数据类型的类的原型上都有自己的toString,但是只有基本类型所属类的原型上才有valueOf,引用类型只有Object的原型上才有valueOf(Date比较特殊,它的原型上也有valueOf)

let obj1 = {};
let obj2 = new Object();
let arr1 = [10];
let arr2 = new Array(10);

let n1 = 10;
let n2 = new Number(10);
console.log(n2 + 10); // => 20

let arr = [10];
console.log(arr + 10); // => "1010"
// 补充:对象转Number,Number函数
const obj = {
  valueOf() {
    // return 'aaa'
    // return [11, 22]
    return {name: '哈哈'}
  },
  toString() {
    return 33
  }
}

console.log(obj.valueOf())
console.log(obj.toString())
// 返回基本数据类型,则结果是NaN,说明此时不会去调用toString;返回引用类型,则结果是33,说明此时会去调用toString
console.log(Number(obj))
上一篇:通过MessageFormat进行字符格式拼接,比String.format跟方便


下一篇:java 字符型转换成浮点型