5.6 基本包装类型(Boolean,Number,String)
基本类型不是对象为什么会有方法呢?(黑人?)
后台处理了一系列的操作,以下就是例子,创建后立即销毁
var s1 = "some text";
var s2 = s1.substring(2);
===
var s1 = new String("some text");
var s2 = s1.sbustring(2);
s1 = null;
引用类型和基本包类型的主要区别就是对象的生存周期
引用类型:执行流离开当前作用域之前,都一直保存在内存中
基本类型包:只存在于代码执行的瞬间,然后立即销毁
var s1 = "some text";
s1.color = "red";
l(s1.color);//undefined
===
//使用new调用基本包类型的构造函数和直接调用痛么的转型函数是不一样的。
var value = "24";
var number = Number(value);
l(typeof number);//number
var number = new Number(value);
l(typeof number);//object
5.6.1 Boolean类型(建议永远不要用Boolean对象)
Boolean 重写了valueOf方法: 返回基本类型true,false
重写了toString方法, 返回字符串"true","false"
var falseObject = new Boolean(false);
var result = falseObject && true;
l(result);//true
var falseValue = false;
result = falseValue && true;
l(result);//false
5.6.2 Number类型
valueOf: 返回对象基本类型的数值
toString: 字符串形式的数值
toLocalString: 字符串形式的数值
toFixed: 会按照指定的小数位返回数值的字符串表示
toExponential: 返回以指数表示法(e表示法)
toPrecision: 可能会返回固定大小的个数,也可能返回指数格式,根据接受的参数(数值的所有位数)
//toString
var num = 10;
l(num.toString());//10
l(num.toString(2));//1010
l(num.toString(8));//12
l(num.toString(10));//10
l(num.toString(16));//a
//toFixed
var num = 10;
l(num.toFixed(2))//10.00
//toExponential
var num = 10;
l(num.toExponential(1))//1.0e+1
?var num = 99;
//toPrecision
l(num.toPrecision(1));//1e+2
l(num.toPrecision(2));//99
l(num.toPrecision(3));//99.0