JavaScript 複習之包裝物件,Boolean物件,Number物件

DreamTruth發表於2019-02-26

一、包裝物件

JavaScript 中,原始型別的值有三種:數值、字串和布林值。

它們三者轉換為物件的方法:

var v1 = new Number(123);
var v2 = new String('abc');
var v3 = new Boolean(true);
複製程式碼

這裡說一個js面試題吧:實現js 中所有物件深度克隆(包裝物件,Date物件,正則物件)的方法。

function deepClone(obj){
    if (obj==null){
        return obj;
    }
    
    if(typeof obj !=='object'){
        return obj;
    }
    
    if(obj instanceof Date){
        return new Date(obj);
    }
    
    if(obj instanceof RegExp) return new RegEXP(obj);
    
    let newObj = new obj.constructor;
    
    for(let key in obj){
        newObj[key] = deepClone(obj[key]);
    }
    
    return newObj;
}
複製程式碼

這裡可以看到,對於Date物件,和 RegExp物件都是判斷符合條件之後,被封裝成物件。

二、Boolean 物件

這裡需要記住下面 Boolean()函式的型別轉換

Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean('') // false
Boolean(NaN) // false

Boolean(1) // true
Boolean('false') // true
Boolean([]) // true
Boolean({}) // true
Boolean(function(){}) // true
Boolean(/foo/) // true
複製程式碼

三、Number 物件

1、例項方法

Number.prototype.toFixed()方法先將一個數轉為指定位數的小數,然後返回這個小數對應的字串。

Number.prototype.toPrecision()方法用於將一個數轉為指定位數的有效數字。

(12.34).toPrecision(1) // "1e+1"
(12.34).toPrecision(2) // "12"
(12.34).toPrecision(3) // "12.3"
(12.34).toPrecision(4) // "12.34"
(12.34).toPrecision(5) // "12.340"
複製程式碼

相關文章