基本包装类型

要了解基本包装类型,首先要知道基本数据类型和引用数据类型

        基本数据类型:就是简单数据类型,比如string、number、boolean、undefined等。

        引用数据类型:就是复杂数据类型,比如object、array等通过关键字new来创建的。

基本数据类型是将值直接保存在内存空间中的,而引用类型是将地址存放在内存,在js中,不允许直接访问内存空间,所以引用类型的值是按引用访问的。

而要操作基本数据类型的值,就能学到一个新的东西——基本包装类型

基本包装类型:

        为了便于操作基本类型的值,ECMAScript 提供了3个特殊引用类型:Boolean、Number、String。

        基本包装类型,和其他引用类型一样,拥有内置的方法可以对数据进行额外的操作。

每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而调用一些方法操作这些数据。

var str = 'test';
//substring(start,end),截取从start到end的字符串,不包括end。
var str2 = str.substring();
console.log(str2);//st

上面的str是一个字符串类型,为什么能调用substring()方法?

在执行第二行代码时,js会自动执行以下步骤

//用 String 构造函数创建一个实例,这个实例是一个对象
var str = new String('test')
//对象中有内置方法供开发人员调用
var str2 = str.substring()
// 销毁这个实例
str = null

那么js什么时候会自动创建一个对应的基本包装类型对象呢?

        当前代码是否处于读取模式,也就是说是否时为了获取他的值。

引用类型和基本包装类有什么不同呢?

最主要的区别就是生命周期的不同

  • 引用类型:使用关键字new创建的引用类型实例,在执行流离开当前作用域之前一直保存在内存中。
  • 基本包装类型:只存在一行代码的瞬间,然后立即销毁
var str = 'test'
str.test = 'hhh'
console.log(str.test) //undefined

当执行第二行代码时,js自动创建了String实例,并添加了test属性,当执行完第二行代码后,String实例自动销毁。执行到第三行代码时,此时是读取模式,js会自动再创建一个String实例,此时str.test的值为undefined。

Boolean类型

boolean类型没有特定的属性和方法。一般直接将Boolean当做一个工具方法使用。

Number类型

toString把数字转换成字符串

var num = 10; 
alert(num.toString()); //"10" 
alert(num.toString(2)); //"1010" 二进制
alert(num.toString(8)); //"12"   八进制
alert(num.toString(10)); //"10"  十进制
alert(num.toString(16)); //"a"    十六进制

toLocaleString把数字转换为字符串,使用本地数字格式顺序

var num = 123;
alert(num.toLocaleString()); //123

toFixed把数字转换为字符串,结果的小数点后有指定位数的数字

var num = 10; 
alert(num.toFixed(2)); //"10.00"

具有能够自动舍入的特性
var num = 10.005; 
alert(num.toFixed(2)); //"10.01"

toExponential把对象的值转换成指数计数法

var num = 10; 
alert(num.toExponential(1)); //"1.0e+1"

toPrecision方法可在对象的值超出指定位数时将其转换为指针计数法

var num = 123;
alert(num.toPrecision(2)); // 1.2e+2

valueOf返回一个Number对象的基本数字值

var num = 123;
alert(num.valueOf()); // 123 number

String

charAt(index)返回指定索引位置的字符

var str = 'hello';
console.log(str.charAt(0)); // h

charCodeAt(index) 以Unicode编码形式返回指定索引位置的字符

var str = 'hello';
console.log(str.charCodeAt(0)); // 104

concat(str1,str2...strx) 连接字符串。

var str = 'hello';
console.log(str.concat('world', 'hello', 'javascript')); // helloworldhellojavascript

slice(start,end) 提取字符串的片断,并在新的字符串中返回被提取的部分。

var str = 'hello';
console.log(str.slice(0,3)); // hel

substring(start,end) 提取字符串中两个指定的索引号之间的字符。

var str = 'hello';
console.log(str.substring(0, 3)); // hel
console.log(str.substring(0)); // hello

substr(start,length) 从起始索引号提取字符串中指定数目的字符。

var str = 'hello';
console.log(str.substr(0, 3)); // hel

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

var str = 'hello world';
console.log(str.indexOf('l')); // 2
//没有找到,则返回-1.

lastIndexOf(str,n) 从n开始搜索的最后一个str,并将搜索的索引值返回。

var str = 'hello world';
console.log(str.lastIndexOf('l')); // 9
//没有找到,则返回-1.

大小写转换方法

方法描述
toLowerCase()把字符串转换为小写。
toUpperCase()把字符串转换为大写。
toLocaleLowerCase()把字符串转换为小写。本地化
toLocaleUpperCase()把字符串转换为大写。本地化
var str = 'hello world';
// 转换为大写
console.log(str.toUpperCase()); //HELLO WORLD
// 转换为小写
console.log(str.toLowerCase()); //hello world

字符串的模式匹配方法

方法描述
match()找到一个或多个正则表达式的匹配。
replace()替换与正则表达式匹配的子串。
search()检索与正则表达式相匹配的值。
split()

把字符串分割为字符串数组。

 

var str = 'HELLO World';
console.log(str.match('L'));//找到 L,返回 L 否则返回 null
console.log(str.search('L'));//找到 L 的位置,和 indexOf 类似
console.log(str.replace('L', 'Q'));//把 L 替换成 Q
//如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
console.log(str.split(''));//把字符串分割为字符串数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值