基本包装类型
为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
<script type="text/javascript">
var str = 'my name is lisong';
str.name = 'lisong';
console.log(str.name); //undefined,基本类型不可以设置属性
str = str.substring(3);//基本类型有固有的方法,系统预设的
console.log(str); //name is lisong
var str = new String('my name is lisong');
str.name = 'lisong';
console.log(str.name);//lisong,对象可以设置属性
str = str.substring(3);//返回的是字符串,不是String对象
str.name = 'lisong';
console.log(str.name);//undefined,返回的str是字符串,不能设置属性
</script>
基本包装类型的原理:
<script type="text/javascript">
var a = '123';
console.log(a.length);//3
a.length = 2;
console.log(a.length);//3
</script>
每当我们使用基本类型的属性的时候,JS引擎内部将为我们隐式地创建一个包装对象,使用完后将会销毁。第三行试图更改a.length的值,但是其只是在这一行有效,当第四行在次读取的时候,第三行构造的引用已经销毁了,会重新构造一个引用类型(new String(a)),所以其读取length仍然是3。(真实实现并不一定是这样,但整个过程看起来是这样)
Boolean类型
Boolean类型没有特定的属性或者方法。
Number对象
Number 对象方法
方法 | 描述 |
---|---|
toString | 把数字转换为字符串,使用指定的基数。 |
toLocaleString | 把数字转换为字符串,使用本地数字格式顺序。 |
toFixed | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
toExponential | 把对象的值转换为指数计数法。 |
toPrecision | 把数字格式化为指定的长度。 |
valueOf | 返回一个 Number 对象的基本数字值。 |
toPrecision(num):
返回 NumberObject 的字符串表示,包含num 个有效数字。如果 num 足够大,能够包括 NumberObject 整数部分的所有数字,那么返回的字符串将采用定点计数法。否则,采用指数计数法,即小数点前有一位数字,小数点后有 num-1 位数字。必要时,该数字会被舍入或用 0 补足。
toFixed(num):
返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
toExponential(num):
返回 NumberObject 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。
以上三个函数一般只用到toFixed()。
var box = 1000.789;
console.log(box.toString()); //转换为字符串,传参可以转换进制
console.log(box.toLocaleString()); //本地形式,1,000.789
console.log(box.toFixed(2)); //小数点保留,1000.79
console.log(box.toExponential()); //指数形式,传参会保留小数点
console.log(box.toPrecision(3)); //1.00e+3
console.log(box.toPrecision(4)); //10001
String对象常用方法:
- indexOf(str, n) :从n开始搜索的第一个str,并将搜索的索引值返回
- lastIndexOf(str, n) :从n开始搜索的最后一个str,并将搜索的索引值返回
- concat(str1…str2) :将字符串参数串联到调用该方法的字符串
- slice(n,m) :返回字符串n到m之间位置的字符串
- substring(n,m): 同上
- substr(n,m) :返回字符串n开始的m个字符串
slice与substring的区别:
- slice的start和end都可以为负数,substring的这两个参数为负数时将转换成0;
- slice可以用于数组