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
5.6.3 String类型
实例
var stringObject = new String("hello world");
valueOf,toLocaleString,toString都返回对象所表示的基本字符串值。
length: 字符串的字符数量。
- 字符方法:charAt() charCodeAt()
var stringValue1 = "hello world";
l(stringValue1.charAt(1));//e
l(stringValue1.charCodeAt(1));//101
2.字符串操作方法: concat(+),slice, substr, substring
concat: 拼接字符串,不过更多时候是用+拼接
var stringValue = "hello";
var result = stringValue.concat(" world");
l(result);//hello world
l(stringValue);//hello
slice: 第一个参数是开始位置,第二个参数表示子字符串到哪里结束。(负数情况,负数值加上字符串长度)
substr: 第一个参数是开始位置,第二个参数表示返回字符串个数(负数情况,负数值加上字符串长度,第二个参数变为0)
substring: 第一个参数是开始位置,第二个参数表示子字符串到哪里结束。(负数变为0)
var stringValue = "hello world";
l(stringValue.slice(3));//lo world
l(stringValue.substring(3));//lo world
l(stringValue.substr(3));//lo world
l(stringValue.slice(3, 7));//lo w
l(stringValue.substring(3, 7));//lo w
l(stringValue.substr(3, 7));//lo worl
//负数情况
var stringValue = "hello world";
l(stringValue.slice(-3));//rld
l(stringValue.substring(-3));//hello world
l(stringValue.substr(-3));//rld
l(stringValue.slice(3, -4));//low
l(stringValue.substring(3, -4));//hel
l(stringValue.substr(3, -4));//
3.字符串位置方法(indexOf, lastIndexOf)
返回字符串位置,没有找到返回-1
第二个参数是从指定位置开始搜索
var stringValue = 'hello world';
l(stringValue.indexOf('o'));//4
l(stringValue.lastIndexOf('o'));//7
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipicicing elit";
var position = new Array();
var pos = stringValue.indexOf("e");
while(pos > -1){
position.push(pos);
pos = stringValue.indexOf("e", pos+1);
}
l(position);//[3, 24, 32, 35, 52]
- trim() 方法
删除前置以及后置所有空格,然后返回结果
var stringValue = " hello world ";
var trimmedStringValue = stringValue.trim();
l(stringValue);// hello world
l(trimmedStringValue);//hello world
5 字符串大小写转换方法(在不知道自己代码将在什么语言环境下运行,针对地区的方法更稳妥)
toLocaleUpperCase
toUpperCase
toLocaleLowerCase
toLowerCase
var stringValue = "hello wold";
l(stringValue.toLocaleUpperCase());//HELLO WORLD
l(stringValue.toUpperCase());//HELLO WORLD
l(stringValue.toLocaleLowerCase());//hello world
l(stringValue.toLowerCase());//hello world
- 字符串的模式匹配方法
match: 只接受一个参数,要么是正则表达式,要么是RegExp对象
var text = "cat,bat,sat,fat";
var pattern = /.at/;
//与pattern.exe(text) 类似
var matches = text.match(pattern);
l(matches.index);//0
l(matches[0]);//cat
search: 返回字符串中第一个匹配项的索引,没有找到返回-1
var text = "cat,bat,sat,fat";
var pos = text.search(/at/);
l(pos);//1
replace: 第一个参数是RegExp对象或者一个字符串,第二个参数是一个字符串或者一个函数
var text = "cat,bat,sat,fat";
var result = text.replace('at', 'ond');
l(result);//cond,bat,sat,fat
result = text.replace(/at/g,"ond");
l(result);//cond,bond,sond,fond
//字符序列
var text = "cat,bat,sat,fat";
result = text.replace(/(.at)/g, "world, ($1)");
l(result)//world, (cat),world, (bat),world, (sat),world, (fat)
split: 根据指定的分割符号将字符串转换为数组
var colorText = "red,blue,green,yellow";
var color1 = colorText.split(',');
var color2 = colorText.split(',',2);
var color3 = colorText.split(/[^\,]+/);
l(color1);//["red", "blue", "green", "yellow"]
l(color2);//["red", "blue"]
l(color3);//["", ",", ",", ",", ""]
7.localeCompare(比较位置)
var stringValue = "yellow";
l(stringValue.localeCompare('brick'));//1
l(stringValue.localeCompare('yellow'));//0
l(stringValue.localeCompare('zoo'));//-1
8.fromCharCode
l(String.fromCharCode(104, 101, 108, 108, 111))//hello
9.HTML方法(早期)