博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.基本包装类型
阅读量:5291 次
发布时间:2019-06-14

本文共 5408 字,大约阅读时间需要 18 分钟。

基本包装类型

学习要点:

1.基本包装类型概述
2.Boolean类型
3.Number类型
4.String类型

为了便于操作基本类型值,ECMAScript提供了3中特殊的引用类型:Boolean、Number和String,这些类型与其
它引用类型相似,但同时也具有与各自基本类型相应的特殊行为,实际上,每当读取一个基本类型值的时候,后台
就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。

一、基本包装类型概述

var box = 'Mr.journey'; //定义一个字符串

var box2 = box.substring(2); //截掉字符串前两位
alert(box2); //输出新字符串

变量box是一个字符串类型,而box.substring(2)又说明它是一个对象(PS:只有对象才会调用方法),最后把处

理结果赋给box2。“Mr.journey”是一个字符串类型的值,按道理它不应该是对象,不应该会有自己的方法,比如:
alert('Mr.journey(2)'); //直接通过值来调用方法

1.字面量写法

var box = 'Mr.journey'; //字面量
box.name = 'journey'; //无效属性
box.age = function (){ //无效方法
return 100;
};
alert(box); //Mr.journey
alert(box.substring(2)); //.journey,对象.方法(参数),这种写法明显是引用类型的写法
alert(typeof box); //string
alert(box.name); //undefined
alert(box.age); //错误

2.new运算符写法

var box = new String('Mr.journey');
box.name = 'journey';
box.age = function (){
return 100;
};
alert(box); //Mr.journey
alert(box.substring(2)); //.journey
alert(typeof box); //object
alert(box.name); //journey
alert(box.age); //100

以上字面量声明和new运算符声明很好的展示了它们之间的区别。但有一定还是可以肯定的,那就是不管字面量

形式还是new运算符形式,都可以使用它的内置方法。并且Boolean和Number特性与String相同,三种类型可
以成为基本包装类型。

PS:在使用new运算符创建以上三种类型的对象时,可以给自己添加属性和方法,但我们建议不要这样使用,

因为这样会导致根本分不清到底是基本类型值还是引用类型值。

二、Boolean类型

Boolean类型没有特定的属性和方法。

三、Number类型

Number类型有一些静态属性(直接通过Number调用的属性,而无须new运算符)和方法。

Number静态属性

属性 描述
MAX_VALUE 表示最大值
MIN_VALUE 表示最小值
NaN 非数值
NEGATIVE_INFINITY 负无穷大,溢出返回该值
POSITIVE_INFINITY 无穷大,移除返回该值
prototype 原型,用于增加新属性和方法

var box = 100;
alert(box.MAX_VALUE); //这种写法叫做属性
alert(Number.MAX_VALUE); //这种写法叫做静态属性(类型.属性)

 

Number对象的方法

方法(参数) 描述
toString() 将数值转化为字符串,并且可以转换进制
toLocaleString() 根据本地数字格式转换为字符串
toFixed() 将数字保留小数点后指定位数并转化为字符串
toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
toPrecision() 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串

var box = 1000.784;
alert(box);
alert(typeof box); //number
alert(typeof box.toString()); //string,toString()把数值转换为字符串
alert(box.toLocaleString()); //本地化
alert(box.toFixed(2)); //小数点保留两位,并转换字符串,四舍五入
alert(box.toExponential()); //以指数形式,转换字符串
alert(box.toPrecision(2)); //根据传参来决定指数或者点数

 

三、String类型

String类型包含了三个属性和大量的可用内置方法。

String对象属性

属性 描述
length 返回字符串的字符长度
constructor 返回创建String对象的函数
prototype 通过添加属性和方法扩展字符串定义

String也包含对象的通用方法,比如valueOf()、toLocalString()和toString()方法,但这些方法都返回字符串的

基本值。

字符方法
方法 描述
charAt(n) 返回指定索引位置的字符串
charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符

var box = 'Mr . journey'; //

alert(box.charAt(1)); //r,返回指定索引下标的值
alert(box.charCodeAt(1)); //114,返回的是acssii码
alert(box[1]); //r,通过数组方式截取

PS:box[1]在IE浏览器会显示undefined,所以使用时要慎重

字符串操作方法
方法 描述
concat(str1.....str2) 将字符串参数串联到调用该方法的字符串
slice(n,m) 返回字符串n到m之间位置的字符串
substring(n,m) 同上
substr(n,m) 返回字符串n开始的m个字符串

var box = 'Mr. Lee';

alert(box.concat('is' ,'Teacher' , '!')); //Mr. Lee is Teacher !
alert(box.slice(4)); //Lee
alert(box.slice(4,6)); //Le,从第4位取到第6位
alert(box.substring(4)); //Lee
alert(box.substring(4,6)); //Le,从第4位取到第6位
alert(box.substr(4)); //Lee
alert(box.substr(4,2)); //Le,从第4个开始选两个

var box = 'Mr.Lee';
alert(box.slice(-3)); //Lee,6+(-3)=3位开始
alert(box.substring(-3)); //Mr.Lee,负数返回全部
alert(box.substr(-3)); //Lee,6+(-3)=3位开始

var box = 'Mr.Lee';

alert(box.slice(3,-1)); //Le,6+(-1)=5,(3,5)
alert(box.substring(3,-1)); //Mr.第二参数位负,直接转为0,(0,3)
alert(box.substr(3,-1)); //'',第二个参数为负数,直接转为0,(3,0)

PS:IE在JavaScript实现在处理向substr()方法传递负值的情况下存在问题,他会返回原始字符串,使用时要慎重

 

字符串位置方法

方法 描述
indexOf(str,n) 从第n个搜索的第一个str,并将搜索的索引值返回
lastIndexOf(str,n) 从n开始搜索的最后一个str,并将搜索的索引值返回

var box = 'Mr.Lee is Lee';

alert(box.indexOf('L')); //3
alert(box.indexOf('L',5)); //10
alert(box.lastIndexOf('L')); //10
alert(box.lastIndexOf('L',5)); //3,从指定的位置向前搜索,

PS:如果没有找到想要的字符,则返回-1。

示例:找出全部的L

var box = 'Mr.Lee is Lee'; //包含两个L的字符串
var boxarr=[]; //存放L位置的数组
var pos = box.indexOf('L'); //先获取第一个L的位置
while(pos>-1){ //如果位置大于-1,说明还存在L
boxarr.push(pos); //添加到数组
pos = box.indexOf('L' , pos+1); //从新赋值pos目前的位置
}
alert(boxarr);

大小写转换方法

方法 描述
toLowerCase(str) 将字符串全部抓为小写
toUpperCase(str) 将字符串全部转为大写
toLocaleLowerCase(str) 将字符串全部转为小写,并且本地化
toLocaleUpperCase 将字符串全部转为大写,并且本地化

var box = 'Mr.Lee is Lee';
alert(box.toLowerCase()); //全部转为小写
alert(box.toUpperCase()); //转为大写
alert(box.toLocaleLowerCase()); //
alert(box.toLocaleUpperCase()); //

 

PS:只有几种语言(如土耳其语)具有地方特有的大小写本地性,一般来说,是否本地化效果都是一致的。

字符串的模式匹配方法

方法 描述
match(pattern) 返回pattern中的子串或null
replace(pattern , replacement) 用replacement替换pattern
search(pattern) 返回字符串中pattern开始位置
split(pattern) 返回字符串中按指定pattern拆分的数组

正则表达式在字符串中的应用,在前面的正则表达式章节已经详细探讨过.

以上中match()、replace()、search()、split()在普通字符串中也可以使用。

var box = 'Mr.Lee is Lee';

alert(box.match('L')); //找到L,返回L,否则返回null
alert(box.replace('L','Q')); //找到L并且替换成Q
alert(box.search('L')); //找到L的位置
alert(box.split('')); //以空格分割成字符串

其他方法
方法 描述
fromCharCode(ascii) 静态方法,输出Ascii码对应值
localeCompare(str1 , str2) 比较两个字符串,并返回相应的值

alert(String.fromCharCode(76)); //L,输出Ascii码对应值,放一个ascii码

localeCompare(str1 , str2)方法详解:比较两个字符串并返回以下值中的一个:
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1)
2.如果字符串等于字符串参数,则返回0.
3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1)

HTML方法
方法 描述
anchor(name) <a name="name">str</a>
big() <big>str</big>
blink() <blink></blink>
bold() <b>str</b>
fixed() <tt>str</tt>
fontcolor(color) <font color="color">str</font>
fontsize(size) <font size="size">str</font>
link(URL) <a href="URL">str</a>
smail() <smail>str</smail>
strike() <strike>str</strike>
italics() <i>italics</i>
sub() <sub>str<sub>
sup() <sup>str</sup>

以上是通过JS生成一个html标签,根据经验,没有什么太大用处,做个了解。

var box = '百度';

alert(box.link("http://www.baidu.com")); //超链接

 

转载于:https://www.cnblogs.com/journey-IT/p/5260208.html

你可能感兴趣的文章
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
bzoj3110: [Zjoi2013]K大数查询 【树套树,标记永久化】
查看>>
[原创]Java 的传值小例子
查看>>
博客第一弹—聊聊HTML的那些事
查看>>
Mysql安装方法及安装问题解决
查看>>
Java动态代理的两种实现方式:
查看>>
PHP trait
查看>>
1_fbauto
查看>>
IO体系、集合体系、多线程、jdbc
查看>>
关于时间:UTC/GMT/xST/ xDT
查看>>
[51Nod1089] 最长回文子串 V2(Manacher算法)
查看>>
Asp.Net生命周期系列六
查看>>
php引用 =& 详解
查看>>
Codeforces 914D Bash and a Tough Math Puzzle (ZKW线段树)
查看>>