js中的包装类型

34 阅读1分钟

包装类型

js的基本数据类型是没有属性和方法的,但有的时候我们却能看到'abc'.indexof('a') , 12.35.toFixed(2),这时就会想它们调用的方法从何而来?

假设 
const str = 'zhangsan'
str.length //8
str.indexof('z')

其实当我们在访问str.length的时候,js会把'zhangsan'隐式的转换成String('zhangsan'),然后再对其的length属性进行访问。

同理js也可以显式的使用Object方法对基本类型进行转换包装

const str = 'mi'
Object(str)  // String{'str'}

取值则需要调用valueOf方法,同时此方法也可把包装类型转换成基本类型

const str = 'mi'
Object(str)  // String{'str'}
const value = str.valueof()  // 'mi'