JavaScript学习记录-基本包装类型

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

此处特意加注基本类型和引用类型的概念内容,以免忘记。基本数据类型:按值访问,可操作保存在变量中的实际的值。基本类型值指的是简单的数据段。基本数据类型有这五种:Undefined、Null、String、Number、Boolean。

引用类型:当复制保存着对象的某个变量时,操作的是对象的引用,但在为对象添加属性时,操作的是实际的对象。引用类型值指那些可能为多个值构成的对象。引用类型有这几种:object、Array、RegExp、Date、Function、特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)。

基本包装类型举例,

var demo1="Hello World";
var demo2=demo1.substring(6);
alert(demo2);

分析上例,demo1是字符串类型,又因为只有对象才可以调用方法,demo1.substring(6)说明了demo1是一个对象,最后将处理结果赋值给demo2。字符串类型是基本类型,不应该是一个对象,也就不应该有自己的方法,然而代码顺利的执行了。上述代码等同于:

alert("Hello World".substring(6));    //输出结果World

为了更形象的了解基本类型和引用类型操作上的不同,用字面量写法和new运算符写法来创建两个例子比较不同,但是,两种方法都可以使用其内置方法(例:demo substring(9))。

1、字面量写法

var demo="personal information";//定义一个字符串类型变量,是基本类型
//故意认为基本类型就是对象,可以有自己的方法
demo.name="bert";
demo.age=function(){
    return 24;
}
alert(demo);//输出结果personal information
alert(typeof demo);//查看demo类型,是string类型
alert(demo.name);//输出结果undefined,说明字符串类型没有自己的属性,name是无效属性
alert(demo.age());//报错demo.age is not a function,说明基本类型没有方法

alert(demo.substring(9));//输出结果information

2、new运算符写法

var demo=new String("personal information");
demo.name="bert";
demo.age=function(){
    return 24;
}
alert(demo);    //输出结果personal information
alert(typeof demo);    //Object
alert(demo.name);    //bert
alert(demo.age());    //24
alert(demo.substring(9));    //information

note:在使用new运算符创建String、Number、Boolean三种类型的对象时,可以给自己添加属性和方法,但不建议这样使用,因为这样会导致根本分不清到底是基本类型值还是引用类型值。

一、Boolean类型

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

二、Number类型

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

1、Number静态属性

 

描述

MAX_VALUE

表示最大数

MIN_VALUE

表示最小值

NaN

非数值

NEGATIVE_INFINITY

负无穷大,溢出返回该值

POSITIVE_INFINITY

无穷大,溢出返回该值

prototype

原型,用于增加新属性和方法

2、Number对象的方法

 

描述

toString()

将数值转化为字符串,并且可以转换进制

toLocaleString()

根据本地数字格式转换为字符串

toFixed()

将数字保留小数点后指定位数并转化为字符串

toExponential()

将数字以指数形式表示,保留小数点后指定位数并转化为字符串

toPrecision()

指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串

上述代码实现:

var demo=1234.567;

alert(demo.toString());
alert(typeof demo.toString());  //Number类型变成了String类型

alert(demo.toFixed(2));//保留小数点后两位
alert(typeof demo.toFixed());//String类型

alert(demo.toExponential());//科学计数法表示1.234567e+3,
alert(typeof demo.toExponential());//String类型

alert(demo.toPrecision(3));//输出结果1.23e+3
alert(typeof demo.toPrecision(3));//String类型

三、String类型

String类型包含 了三大属性和大量可用的内置对象。

1、String对象属性

属性 描述
length 返回字符串的字符长度
constructor

返回创建String对象的函数

prototype t通过添加属性和方法扩展字符串定义

2、String包含了对象的通用方法,比如valueOf()、toLocaleString()和toString()方法,但这些方法都返回字符串的基本值。此外,可用的内置方法有字符方法、字符方法、字符串位置方法、大小写转换方法、字符串的模式匹配方法...

(1)字符方法

方法

描述

charAt(n) 返回指定索引位置的字符
charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符
var demo="Hello World";
alert(demo.charAt(4));//返回第四位字符o

2、字符串操作方法

方法 m描述
concat(str1...str2) 将字符串参数串联到调用该方法的字符串
slice(n,m) 返回字符串n到m之间位置的字符串
substring(n,m) 返回字符串n到m之间位置的字符串
substr(n,m) 返回字符串n开始的m个字符串
var demo="The harder you work,";
alert(demo.concat('the ','more ','progress ','you ','make ','.'));
alert(demo.slice(4));//只写一个参数,默认截取从当前位置到最后一个字符
alert(demo.slice(4,10));//截取到第十个字符,但不包含第十个字符
alert(demo.substring(4));//返回结果harder you work,
alert(demo.substr(4,6));//从第4个字符开始截取接下来的6个字符

alert(demo.slice(-5));//返回最后5个字符
alert(demo.slice(4,-10));//总字符19位,19+(-10)=9,从第4位开始截取到第9位,包含第9位。
alert(demo.substring(-4));//负数返回全部
alert(demo.substr(4,-1));//空白

3、字符串位置方法

 

描述

indexOf(str, n)

n开始搜索的第一个str,并将搜索的索引值返回

lastIndexOf(str, n)

n开始搜索的最后一个str,并将搜索的索引值返回

var demo="Every little helps.";
alert(demo.indexOf("l"));//搜寻到第一个‘l’字符,返回其位置第6位
alert(demo.indexOf("i",10));//从第10位开始搜寻‘i’字符,未找到返回-1
alert(demo.lastIndexOf("e"));//从头开始搜寻‘e’字符,返回找到的最后一个的位置第14位
alert(demo.lastIndexOf("l",5));//从第5位开始向前搜寻‘l’字符,未找到返回-1

4、大小写转换方法

 

描述

toLowerCase(str)

将字符串全部转换为小写

toUpperCase(str)

将字符串全部转换为大写

toLocaleLowerCase(str)

将字符串全部转换为小写,并且本地化

toLocaleupperCase(str)

将字符串全部转换为大写,并且本地化

5、字符串的模式匹配方法

 

描述

match(pattern)

返回pattern 中的子串或null

replace(pattern, replacement)

用replacement 替换pattern

search(pattern)

返回字符串中pattern 开始位置

split(pattern)

返回字符串按指定pattern 拆分的数组

6、其他方法

 

描述

fromCharCode(ascii)

静态方法,输出Ascii码对应值

localeCompare(str1,str2)

比较两个字符串,并返回相应的值

var demo="Hello";
alert(demo.localeCompare("World"));    //-1
alert(demo.localeCompare("Everyone"));    //0
alert(demo.localeCompare("Hi"));    //-1

比较两个字符串并返回以下值中的一个:

如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1),

如果字符串等于字符串参数,则返回0,

如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1),

第一个字符相同时候比较第二个字符,比较规则如上。

猜你喜欢

转载自blog.csdn.net/bertZuo/article/details/81283710
今日推荐