JavaScript的引用类型(五)--基本包装类型

ECMAScript提供了三个特殊的引用类型:Boolean、Number和String。

String类型==> var stringObject = new String("hello world");

Booleab类型==> var booleanObject = new Boolean(true);

Number类型==> var numberObject =  new Number(10);

注!!! 加new 创建的是对象object,不加new创建的是基本类型。

例子:(下述方法三个步骤同样适用于Boolean和Nunber类型对应的布尔值和数字值)

var s1 = "some text";

var s2 = s1.substring(2);  //后台对这行代码自动进行了一系列的处理,从而使其具有对象的方法

后台自动完成的处理:

step1:创建String类型的一个实例  ==>var s1 = new String("some text");

step2:在实力上调用指定的方法  ==>var s2 = s1.substring(2);

step3:销毁这个实例  ==>s1 = null;

注!!!

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

变量number中保存的是基本类型的值25;而变量obj中保存的是number的实例。


这个故事告诉我们:虽然表面输出来的值是“基本变量”25,但其实际却不一定是基本变量number而是引用类型对象object
此处是基本类型number

Boolean类型:(永远不要使用Boolean对象!!!)

这就是不建议用new Boolean()创建对象的的原因
去除new 即正常

Number类型:(仍然不建议直接实例化Number类型,而原因与显示创建Boolean对象一样)

方法:toString()  toFixed()  toExponential()  toPrecision()(这三个方法都可以通过向上或向下舍入,做到以最准确的形式来表示带有正确小数位的值)

==>toString()方法传递一个表示基数的参数,告诉它返回几进制的字符串形式

==>toFixed()按照指定的小数位返回数值的字符串表示

标准现实范围:其可以带0到20个小数位
如果数值本身包含的小数位比指定的还多,那么接近指定的最大小数位的值就会舍入

==>toExponential()返回以指数表示法(也称e表示法)表示的数值的字符串形式。

该方法可以接收一个参数,参数表示指定输出结果中的小数位数

==>toPrecision()是上述二者方法的综合体,即可以根据要处理的数值决定到底是调用toFixed()还是调用toExponential()方法

输出结果如下:
注意!!!上述toPrecision()因为无法准确地表示99,所以将它向上舍入为100

String类型:

属性:length  (用于表示字符串中包含多少个字符)

方法:charAt()  charCodeAt()  concat()  slice()  substr()  subString()  indexOf()  lastIndexOf()  trim()  toLowerCase()  toLocalLowerCase()   toUpperCase()  toLocalUpperCase()  match()  search()  replace()  split()  localCompare()  fromCharCode()

==》字符方法:

==>charAt()以单字符字符串的形式返回给定位置的那个字符

==>charCodeAt()同上一样,但其获取的是该单字符的字符编码

也可以用方括号加数字索引来访问字符串中的特定字符

==》字符串操作方法:

==>concat()用于将一个或多个字符串拼接起来,返回拼接得到的新字符串(其可以接收任意多个参数)

                                                                                                                                             

在实践中,使用更多的还是加好操作符(+)!!!

==>slice()、substr()、subString()三者在大多数情况下的结果都是相同的,但当传递的参数是负值情况下,它们的行为就不尽相同了!!!

参数为正数(左开右闭区间)
参数为负数
当第二个参数是负值,这三个方法的行为就各不相同了

==》字符串位置方法:两个方法都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置(如果该子字符串不存在,则返回-1),下述二者只是搜索的方向不同

==>indexOf()(方向从左到右)

==>lastIndexOf()(方向从右到做)

一个参数
两个参数
匹配字符串中所有的子字符串

==》trim()方法创建一个字符串副本,删除前置及后缀的所有空格,然后返回结果。

这个方法大有用处!!!

==》字符串大小写转换方法

==>toLowerCase() 

==>toLocalLowerCase()

==>toUpperCase() 

==>toLocalUpperCase()  

一般来说,在不知道自己的代码将在哪种语言环境中运行的情况下,还是使用针对地区的方法更稳妥一些

==》字符串的模式匹配方法:

==>match()  在字符串上调用这个方法,本质上与调用RegExp的exec()方法相同。(其只接受一个参数:要么是一个正则表达式,要么是一个RegExp对象)

==>search()  与match()方法的参数相同,其返回的是字符串中第一个匹配项的索引

'at'在字符串中第一次出现的位置是1

==>replace()  

这个方法接两个参数:第一个参数可以是一个RegExp对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参数可以是一个字符串或者一个函数

如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,唯一的方法就是提供一个正则表达式,而且要指定全局(g)标志

如果第二个参数是一个函数:在只有一个匹配项(即与模式匹配的字符串》的情况下,会向这个函数传递3个参数:模式的匹配项模式匹配项在字符串中的位置原始字符串

==>split() 这个方法可以给予指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是一个RegExp对象(这个方法不会将字符串看成正则表达式)

接受可选的第二个参数,与指定数组的大小,以便确保返回的数组不会超过既定大小
什么鬼???

==》localCompare() 方法用于比较两个字符串谁在字母表中的先后顺序

==》fromCharCode()方法接收一或多个字符编码,然后将它们转换成一个字符串。(相当于charCodeAt()方法的相反操作)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容