1. 程式人生 > 實用技巧 >558 物件轉換為字串、數字

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))