一、基本包装类型
Boolean、Number 和 String
实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
基本包装类型和引用类型的主要区别:对象的生存期。
使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。
自动创建的基本包装类型的对象,只存在于一行代码的执行瞬间,然后立即被销毁。
基本包装类型的实例调用 typeof 返回 “object”;
使用 instanceof 判断 Object 都是true,String 判断 instanceof String 也返回true,Boolean和Number类推。
创建基本包装类型的对象:
var s1 = new String("some text"); // 显式地调用 Boolean、Number 和 String
var s2 = new Object("some text"); // Object构造函数根据传入值的类型返回相应基本包装类型的实例
1. Boolean类型
创建: var booleanObject = new Boolean(true);
重写了 valueOf() 方法,返回基本类型值 true 或 false;
重写了 toString() toLocaleString() 方法,返回字符串"true"和"false"。
基本类型 与 引用类型 的布尔值 区别:
- 布尔表达式中使用 Boolean 对象,都会转化为true。(最常见问题)
- typeof 操作符对基本类型返回"boolean",对引用类型返回"object"。
- Boolean 对象是 Boolean 类型的实例,使用 instanceof 操作符测试 Boolean 对象返回 true,测试基本类型的布尔值返回 false。
2. Number类型
创建: var numberObject = new Number(10);
重写了 valueOf()方法,返回基本类型的数值,
重写了 toLocaleString() 和 toString() 方法,返回字符串形式的数值。
- toFixed(小数位数)
按照指定的小数位返回数值的字符串表示 //“10.01” - toExponential(小数位数)
返回以指数表示法(也称e表示法) 表示的数值的字符串形式 //“1.0e+1” - toPrecision(位数) – 参数表示数值的所有数字的位数(不包括指数部分)
可能会返回固定大小(fixed)格式,也可能返回指数 (exponential)格式; 具体规则是看哪种格式最合适。
不建议直接实例化 Number 类型。
基本类型数值 与 引用类型数值 区别:
- typeof 操作符测试基本类型数值时,返回"number",测试 Number 对象时, 返回"object"
- Number 对象是 Number 类型的实例,而基本类型的数值不是
3. String类型
创建: var stringObject = new String("hello world");
继承的 valueOf()、toLocaleString() 和 toString() 方法,都返回对象所表示的基本字符串值。
1.字符方法
访问字符串中特定字符:charAt() 和 charCodeAt()
charAt(字符位置) 以单字符字符串的形式返回给定位置的那个字符;
charCodeAt(字符位置) 返回的不是字符而是字符编码
ECMAScript5增加了访问个别字符的方法:字符串[索引] 例如 stringValue[1]
浏览器支持:IE8 及 Firefox、Safari、Chrome 和 Opera 所有版本
2.字符串操作方法
concat(字符串1,字符串2…) 将一或多个字符串拼接起来,返回拼接得到的新字符串
拼接字符串更多使用 +
slice(开始位置,结束位置) 不包括结束位置
substring(开始位置,结束位置) 不包括结束位置
substr(开始位置,截取长度)
比较:
1.没有传第2个参数,截取到字符串最后;
2.参数是负值时:
slice() 将传入的负值与字符串的长度相加(即从后往前算);
substring() 将所有负值参数都转换为 0;
substr() 将负的第一个参数加上字符串的长度,将负的第二个参数转换为 0;
3.substring() 会将较小的数作为开始位置,slice()不会。
以上四个方法,对原始字符串没有任何影响。
3.字符串位置方法
从字符串中查找子字符串:indexOf() 和 lastIndexOf()
返回子字符串的位置,没有找到返回-1
indexOf(字符串,开始位置) 从字符串的开头向后搜索子字符串
lastIndexOf(字符串,开始位置) 从字符串的末尾向前搜索子字符串
第二个参数可选,表示从字符串中的哪个位置开始搜索。
indexOf()会从指定的位置向后搜索,忽略该位置之前的所有字符;
lastIndexOf()会从指定的位置向前搜索,忽略该位置之后的所有字符。
4.trim()方法
删除字符串前置及后缀的所有空格。
浏览器支持:IE9+、Firefox 3.5+、Safari 5+、Opera 10.5+和 Chrome
Firefox 3.5+、Safari 5+ 和 Chrome 8+支持非标准的 trimLeft()和 trimRight()方法,分别删除字符串开头和末尾的空格。
5.字符串大小写转换方法
toLowerCase()、toUpperCase()、toLocaleLowerCase() 和 toLocaleUpperCase()
后2个是针对特定地区的实现,在有些地区与其通用方法得到的结果相同。
6.字符串的模式匹配方法
match(正则表达式 或 RegExp对象) 返回匹配的数组
本质上与调用 RegExp 的 exec() 方法相同。
var text = "cat, bat, sat, fat";
var pattern = /.at/;
var matches = text.match(pattern); //与 pattern.exec(text)相同
// 返回结果:["cat", index: 0, input: "cat, bat, sat, fat", groups: undefined]
var pattern2 = /.at/g;
var matches2 = text.match(pattern2);
// 返回结果:["cat", "bat", "sat", "fat"]
search(正则) 返回字符串中第一个匹配项的索引,没有匹配项返回-1
replace(被替换者,替换成什么) 替换字符串
第一个参数可以是 RegExp 对象或者一个字符串,全局替换使用正则/g
第二个参数可以是一个字符串或者一个函数,字符串可以使用特殊的字符序列;传入函数时,函数参数:模式的匹配项、模式匹配项在字符串中的位置、原始字符串;函数返回一个字符串。
split(分隔符,[数组大小]) 基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。
不传分隔符,会将整个字符串作为一个数组项;
分隔符为空字符串,会将每个字符分割为一个数组项。
7.localeCompare()方法
比较两个字符串。
如果字符串在字母表中应该排在字符串参数之前,则返回一个负数,大多数情况下是-1;
如果字符串等于字符串参数,则返回 0;
如果字符串在字母表中应该排在字符串参数之后,则返回一个正数,大多数情况下是 1。
8.fromCharCode()方法
接收一或多个字符编码,然后将它们转换成一个字符串。
本质上看,这个方法与 charCodeAt() 执行的是相反的操作。
alert(String.fromCharCode(104, 101, 108, 108, 111)); //"hello"
9.HTML方法
anchor(name) <a name= "name">string</a>
big() <big>string</big>
bold() <b>string</b>
fixed() <tt>string</tt>
fontcolor(color) <font color="color">string</font>
fontsize(size) <font size="size">string</font>
italics() <i>string</i>
link(url) <a href="url">string</a>
small() <small>string</small>
strike() <strike>string</strike>
sub() <sub>string</sub>
sup() <sup>string</sup>
尽量不要使用,因为创建的标记通常无法表达语义。
上一篇:11-JavaScript高级程序设计-Function
下一篇:13-JavaScript高级程序设计-单体内置对象