558 物件轉換為字串、數字
阿新 • • 發佈:2020-10-23
* 建立一個變數值兩種方式
* 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))