12-JavaScript高级程序设计-基本包装类型

一、基本包装类型

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高级程序设计-单体内置对象

全书整理版:《Javascript高级程序设计》第3版(总结版)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值