JavaScript 复习之包装对象,Boolean对象,Number对象

209 阅读1分钟

一、包装对象

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"