《JavaScript 闯关记》之基本包装类型

  • 时间:
  • 浏览:10
  • 来源:UU直播快三官方_大发UU直播快3

有有二个 多都能能 从字符串中查找子字符串的最好的办法:indexOf() 和 lastIndexOf()。这有二个 多最好的办法后该 从有二个 多字符串中搜索给定的子字符串,后后 返子字符串的位置(不可能 如此 找到该子字符串,则返回-1)。这有二个 多最好的办法的区别在于:indexOf() 最好的办法从字符串的开头向后搜索子字符串,而 lastIndexOf() 最好的办法是从字符串的末尾向前搜索子字符串。还是来看有二个 多例子吧。

这里给 toFixed() 最好的办法传入了数值 2,意思是显示几位小数。于是,你之类最好的办法返回了 "10.00",即以 0 填补了必要的小数位。不可能 数值有有一种含高的小数位比指定的还多,如此 接近指定的最大小数位的值就会舍入,如下面的例子所示。

下面介绍与操作字符串有关的有几个最好的办法。第有二个 多所以 concat(),用于将一或多个字符串拼接起来,返回拼接得到的新字符串。先来看有二个 多例子。

引用类型与基本包装类型的主要区别所以对象的生存期。使用 new 操作符创建的引用类型的实例,在执行流选择离开当前作用域后后 都老会 保指在内存中。而自动创建的基本包装类型的对象,则只指在于一行代码的执行瞬间,后后 立即被销毁。这原应大伙都能能 了在运行时为基本类型值去掉 属性和最好的办法。来看下面的例子:

作者:劼哥stone

来源:51CTO

String 类型定义了有几个用于在字符串中匹配模式的最好的办法。第有二个 多最好的办法所以 match(),在字符串上调用你之类最好的办法,本质上与调用RegExp 的 exec() 最好的办法相同。match() 最好的办法只接受有二个 多参数,要么是有二个 多正则表达式,要么是有二个 多 RegExp 对象。来看下面的例子。

为了冗杂替换子字符串的操作,JavaScript 提供了 replace() 最好的办法。你之类最好的办法接受有二个 多参数:第有二个 多参数都能能 是有二个 多 RegExp 对象不可能 有二个 多字符串(你之类字符串很多再被转去掉 正则表达式),第二个 参数都能能 是有二个 多字符串不可能 有二个 多函数。不可能 第有二个 多参数是字符串,如此 只会替换第有二个 多子字符串。要想替换所有子字符串,唯一的最好的办法所以提供有二个 多正则表达式,后后 要指定全局 g 标志,如下所示。

在传递给你之类最好的办法的参数是负值的情况报告下,它们的行为就不尽相同了。其中,slice() 最好的办法会将传入的负值与字符串的长度相加,substr() 最好的办法将负的第有二个 多参数去掉 字符串的长度,而将负的第二个 参数转换为0。最后,substring() 最好的办法会把所有负值参数都转换为0。下面来看例子。

把字符串传给 Object 构造函数,就会创建 String 的实例;而传入数值参数会得到 Number 的实例,传入布尔值参数就会得到Boolean 的实例。

String 对象的最好的办法也都能能 在所有基本的字符串值中访问到。其中,继承的 valueOf()、toLocaleString() 和 toString() 最好的办法,都返回对象所表示的基本字符串值。

Number 是与数字值对应的引用类型。要创建 Number 对象,都能能 在调用 Number 构造函数时向其中传递相应的数值。下面是有二个 多例子。

都能能 将以上有二个 多步骤想象成是执行了下列 JavaScript 代码。

Boolean 类型是与布尔值对应的引用类型。要创建 Boolean 对象,都能能 像下面原来调用 Boolean 构造函数并传入 true 或 false值。

不可能 字符串等于字符串参数,则返回0;

应该注意的是,即使字符串中含高双字节字符(后该 占有二个 多字节的 ASCII 字符),每个字符也仍然算有二个 多字符。之类:

基本类型与引用类型的布尔值还有有二个 多区别。首先,typeof 操作符对基本类型返回 "boolean",而对引用类型返回 "object"。其次,不可能 Boolean 对象是 Boolean 类型的实例,所以使用 instanceof 操作符测试 Boolean 对象会返回 true,而测试基本类型的布尔值则返回 false。之类:

不可能 字符串在字母表中应该排在字符串参数后后 ,则返回有二个 多负数(大多数情况报告下是-1,具体的值要视实现而定);

String 类型提供了所以最好的办法,用于辅助完成对 JavaScript 中字符串的解析和操作。

在这里,大伙给 fromCharCode() 传递的是字符串 "hello" 中每个字母的字符编码。

下面是有几个例子。

String 类型的每个实例都有二个 多多 length 属性,表示字符串中含高多个字符。来看下面的例子。

String 类型是字符串的对象包装类型,都能能 像下面原来使用 String 构造函数来创建。

ECMAScript 5 为所有字符串定义了 trim() 最好的办法。你之类最好的办法会创建有二个 多字符串的副本,删除前置及后缀的所有空格,后后 返回结果。之类:

JavaScript 中涉及字符串大小写转换的最好的办法有有二个 多:toLowerCase()、toLocaleLowerCase()、toUpperCase() 和toLocaleUpperCase()。其中,toLowerCase() 和 toUpperCase() 是有二个 多经典的最好的办法,借鉴自 java.lang.String 中的同名最好的办法。而 toLocaleLowerCase() 和 toLocaleUpperCase() 最好的办法则是针对特定地区的实现。对后后 地区来说,针对地区的最好的办法与其通用最好的办法得到的结果相同,但少数语言(如土耳其语)会为 Unicode 大小写转换应用特殊的规则,这后后 就都能能 使用针对地区的最好的办法来保证实现正确的转换。以下是有几个例子。

ECMAScript 5 还定义了原来访问个别字符的最好的办法。在支持浏览器中,都能能 使用方括号加数字索引来访问字符串中的特定字符,如下面的例子所示。

对于有二个 多数值来说,toPrecision() 最好的办法不可能 会返回固定大小(fixed)格式,所以可能 返回指数(exponential)格式;具体规则是看哪种格式最要花费 。你之类最好的办法接收有二个 多参数,即表示数值的所有数字的位数(不包括指数每项)。请看下面的例子。

一般来说,在我后后知道当事人的代码将在哪种语言环境中运行的情况报告下,还是使用针对地区的最好的办法更稳妥后后 。

但都能能 注意的是,不同浏览器给你之类最好的办法设定的舍入规则不可能 会有所不同。

字符串大小写转换最好的办法

toPrecision() 最好的办法都能能 表现1到21位小数。但这所以标准实现的范围,后后 浏览器所以可能 支持更多位数。

在使用第二个 参数的情况报告下,都能能 通过循环调用 indexOf() 或 lastIndexOf() 来找到所有匹配的子字符串,如下面的例子所示:

除了继承的最好的办法之外,Number 类型还提供了后后 用于将数值格式化为字符串的最好的办法。其中,toFixed() 最好的办法会按照指定的小数位返回数值的字符串表示,之类:

String 类型

尽管大伙不建议显式地创建基本包装类型的对象,但它们操作基本类型值的能力还是相当重要的。而每个基本包装类型都提供了操作相应值的便捷最好的办法。

Number 类型

有二个 多用于访问字符串中特定字符的最好的办法是:charAt() 和 charCodeAt()。这有二个 多最好的办法都接收有二个 多参数,即基于0的字符位置。其中,charAt() 最好的办法以单字符字符串的形式返回给定位置的那个字符(JavaScript 中如此 字符类型)。之类:

以上代码输出了 "1.0e+1";不过,如此 小的数值一般之所以使用 e 表示法。不可能 你想得到表示某个数值的最要花费 的格式,就应该使用toPrecision() 最好的办法。

经过此番处理,基本的字符串值就变得跟对象一样了。后后 ,后面 这有二个 多步骤也分别适用于 Boolean 和 Number 类型对应的布尔值和数字值。

localeCompare() 最好的办法比较与众不同的地方,所以实现所支持的地区(国家和语言)决定了你之类最好的办法的行为。比如,美国以英语作为 JavaScript 实现的标准语言,后后 localeCompare() 所以区分大小写的,于是大写字母在字母表中排在小写字母前头就成为了一项决定性的比较规则。不过,在后后 地区恐怕就后该 你之类情况报告了。

都能能自动舍入的形状,使得 toFixed() 最好的办法很适合处理货币值。

最后有二个 多与模式匹配有关的最好的办法是 split(),你之类最好的办法都能能 基于指定的分隔符将有二个 多字符串分割成多个子字符串,并将结果装进有二个 多数组中。分隔符都能能 是字符串,也都能能 是有二个 多 RegExp 对象(你之类最好的办法很多再将字符串看成正则表达式)。split() 最好的办法都能能 接受可选的第二个 参数,用于指定数组的大小,以便确保返回的数组很多再超过既定大小。请看下面的例子。

在给 toFixed() 传入0的情况报告下,IE8 及后后 版本都能能 了正确舍入范围在{(-0.94,-0.5],[0.5,0.94)}之间的值。对于你之类范围内的值,IE8 会返回0,而后该 -1或1;后后 浏览器都能返回正确的值。IE9 修复了你之类问提。

不可能 你想得到的后该 字符所以字符编码,如此 就要像下面原来使用 charCodeAt() 了。之类:

实际上,concat() 最好的办法都能能 接受任意多个参数,也所以说都能能 通过它拼接任意多个字符串。再看有二个 多例子:

字符串位置最好的办法

字符串的模式匹配最好的办法

不可能 字符串在字母表中应该排在字符串参数后后 ,则返回有二个 多正数(大多数情况报告下是1,具体的值同样要视实现而定)。

关卡

trim() 最好的办法

使用你之类形状,就都能能 确保当事人的代码在任何实现中都能能 正确地运行了。

你之类最好的办法比较有二个 多字符串,并返回下列值中的有二个 多:

原来用于查找模式的最好的办法是 search()。你之类最好的办法的唯一参数与 match() 最好的办法的参数相同:由字符串或 RegExp 对象指定的有二个 多正则表达式。search() 最好的办法返回字符串中第有二个 多匹配项的索引;不可能 如此 找到匹配项,则返回-1。后后 ,search() 最好的办法始终是从字符串开头向后查找模式。看下面的例子。

要注意的是,使用 new 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。 之类:

另外可用于格式化数值的最好的办法是 toExponential(),该最好的办法返回以指数表示法(也称 e 表示法)表示的数值的字符串形式。与toFixed() 一样,toExponential() 也接收有二个 多参数,后后 该参数同样也是指定输出结果中的小数位数。看下面的例子。

Boolean 类型的实例重写了 valueOf() 最好的办法,返回基本类型值 true 或 false;重写了 toString() 最好的办法,返回字符串 "true" 和"false"。原来,Boolean 对象在 JavaScript 中的用处不大,不可能 它老会 会造成大伙的误解。其中最常见的问提所以在布尔表达式中使用 Boolean 对象,之类:

与 Boolean 对象之类,Number 对象也后后 台最好的办法为数值提供了重要的功能。但与此一同,大伙仍然不建议直接实例化 Number 类型,而原应与显式创建 Boolean 对象一样。具体来讲,所以在使用 typeof 和 instanceof 操作符测试基本类型数值与引用类型数值时,得到的结果完全不同,如下面的例子所示。

以上代码首先完成的任务是以一位数来表示 99,结果是 "1e+2",即 5000。不可能 一位数无法准确地表示 99,后后 toPrecision()就将它向上舍入为 5000,原来就都能能 使用一位数来表示它了。而接下来的用两位数表示 99,当然还是 "99"。最后,在想以三位数表示 99 时,toPrecision() 最好的办法返回了 "99.0"。实际上,toPrecision() 会根据要处理的数值决定到底是调用 toFixed() 还是调用 toExponential()。而这有二个 多最好的办法都能能 通过向上或向下舍入,做到以最准确的形式来表示含高正确小数位的值。

JavaScript 还提供了有二个 多基于子字符串创建新字符串的最好的办法:slice()、substr() 和 substring()。这有二个 多最好的办法后该 返回被操作字符串的有二个 多子字符串,后后 也都接受一或有二个 多参数。第有二个 多参数指定子字符串的后后 刚始于了了位置,第二个 参数(在指定的情况报告下)表示子字符串到哪里后后 始于了了。具体来说,slice() 和 substring() 的第二个 参数指定的是子字符串最后有二个 多字符后面 的位置。而 substr() 的第二个 参数指定的则是返回的字符个数。不可能 如此 给你之类最好的办法传递第二个 参数,则将字符串的长度作为后后 始于了了位置。与 concat() 最好的办法一样,slice()、substr() 和 substring()所以会修改字符串有有一种的值,它们所以返回有二个 多基本类型的字符串值,对原始字符串如此 任何影响。请看下面的例子。

fromCharCode() 最好的办法

为了便于操作基本类型值,JavaScript 还提供了二个 特殊的引用类型:Boolean、Number 和 String。实际上,每当读取有二个 多基本类型值的后后 ,后台就会创建有二个 多对应的基本包装类型的对象,从而让大伙都能能调用后后 最好的办法来操作你之类数据。来看下面的例子。

另外,String 构造函数有有一种还有二个 多多静态最好的办法:fromCharCode()。你之类最好的办法的任务是接收一或多个字符编码,后后 将它们转去掉 有二个 多字符串。从本质上来看,你之类最好的办法与实例最好的办法 charCodeAt() 执行的是相反的操作。来看有二个 多例子:

Object 构造函数也会像工厂最好的办法一样,根据传入值的类型返回相应基本包装类型的实例。之类:

这有二个 多最好的办法都能能 接收可选的第二个 参数,表示从字符串中的哪个位置后后 刚始于了了搜索。换句话说,indexOf()会从该参数指定的位置向后搜索,忽略该位置后后 的所有字符;而lastIndexOf()则会从指定的位置向前搜索,忽略该位置后后 的所有字符。看下面的例子。

字符最好的办法

toFixed() 最好的办法都能能 表示含高0到20个小数位的数值。但这所以标准实现的范围,后后 浏览器所以可能 支持更多位数。

你之类例子比较了字符串 "yellow" 和另外有几个值:"brick"、"yellow" 和 "zoo"。不可能 "brick" 在字母表中排在 "yellow" 后后 ,所以 localeCompare() 返回了1;而 "yellow" 等于 "yellow",所以 localeCompare() 返回了0;最后,"zoo" 在字母表中排在 "yellow" 后面 ,所以 localeCompare() 返回了-1。再强调一次,不可能 localeCompare() 返回的数值取决于实现,所以最好是像下面例子所示的原来使用你之类最好的办法。

Boolean 类型

当然,都能能 显式地调用 Boolean、Number 和 String 来创建基本包装类型的对象。不过,应该在绝对必要的情况报告下再原来做,不可能 你之类做法很容易我就分不清当事人是在处理「基本类型」还是「引用类型」的值。对基本包装类型的实例调用 typeof 会返回"object",后后 所有基本包装类型的对象后该 被转换为布尔值 true。

字符串操作最好的办法

之所以 concat() 是专门用来拼接字符串的最好的办法,但实践中使用更多的还是加号操作符 + 。后后 ,使用加号操作符 + 在大多数情况报告下都比使用 concat()最好的办法要简便易行(有点痛 是在拼接多个字符串的情况报告下)。

你之类例子中的变量 s1 包含高二个 多字符串,字符串当然是基本类型值。而下一行调用了 s1 的 substring() 最好的办法,并将返回的结果保指在了 s2 中。大伙知道,基本类型值后该 对象,因而从逻辑上讲它们不应该有最好的办法(尽管如大伙所愿,它们之所以有最好的办法)。之所以,为了让大伙实现你之类直观的操作,后台不可能 自动完成了一系列的处理。当第二行代码访问 s1 时,访问过程指在有有一种读取模式,也也之所以从内存中读取你之类字符串的值。而在读取模式中访问字符串时,后台后该 自动完成下列处理。

理解基本类型的布尔值与 Boolean 对象之间的区别非常重要,大伙的建议是永远之所以使用 Boolean 对象。

与 Boolean 类型一样,Number 类型也重写了 valueOf()、toLocaleString() 和 toString() 最好的办法。重写后的 valueOf() 最好的办法返回对象表示的基本类型的数值,另外有二个 多最好的办法则返回字符串形式的数值。都能能 为 toString() 最好的办法传递有二个 多表示基数的参数,告诉它返回几进制数值的字符串形式,如下面的例子所示。

在你之类例子中,大伙使用 false 值创建了有二个 多 Boolean 对象。后后 ,将你之类对象与基本类型值 true 构成了逻辑与表达式。在布尔运算中,false && true 等于 false。原来,示例中的这行代码是对 falseObject 而后该 对它的值 false 进行求值。布尔表达式中的所有对象后该 被转换为 true,后后 falseObject 对象在布尔表达式中代表的是 true。结果,true && true 当然就等于true 了。