这是我参与2022首次更文挑战的第6天,活动详情查看:链接
一,什么是包装类
我们前面知道,基本数据类型有String,Number,Boolean,Undefined,Null,引用数据类型有Object,
在JavaScript中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转为对象,
分别是:
String() -可以将基本数据类型的字符串转换为String对象,
Number() -可以将基本数据类型的字符串转换为Number对象,
Boolean() -可以将基本数据类型的字符串转换为Boolean对象
注意:在我们实际应用中,不会使用基本数据类型对象,如果使用基本数据类型的对象,在做一些比较时,可能会带来一些不可预料的结果
var num = new Number(123)
console.log(num) //123 typeof num === object
var str = new String('hello')
console.log(str) //hello typeof num === object]
var bool = new Boolean(true)
console.log(bool) //true typeof num === object
#这个时候 我们就可以往num,str,bool 中添加属性
num.count = 122
console.log(num.count ) //undefined
方法和属性只能添加给对象,不能添加给数据类型,当我们对一些基本数据类型的值去调用属性和方法时
浏览器会临时使用包装类将其转为对象,然后再调用对象的属性和方法,
在调用完成,在将其转换为基本数据类型
var str = 123
str = str.toString()
str.addtext = 'xxx'
console.log(str.addtext) // undefined
console.log(str,typeof str) // '123' string
二,字符串的方法
前面我们讲到包装类,可以通过文档熟悉对应包装类中都有哪些方法。
这里重点讲一下Strinng()包装类中的方法。
在底层字符串是以数组形式保存的,如:
var str = 'hello varchar'
//['h','e','l','l','o','','v','a','r','c','h','a','r']
#获取字符串长度 字符串.length
console.log(str.length)
#charAr() 可以返回字符串中指定位置的字符(根据索引获取指定字符)
var res = str.charAt(0)
console.log('res= ' + res) //h
#charCodeAt() 获取指定位置字符的字符编码 (Unicode编码)
var res = str.charAt(0)
console.log('res= ' + res) //Unicode 编码
#fromCharCode() 可以根据字符编码去获取字符
var result = String.fromCharCode(72 )
console.log(result)// H
#concat() 可以用来连接两个或多个字符串
var result = str.concat('你好')
console.log(result)// 'hello varchar你好'
#indexOf() 该方法可以检索一个字符串中是否含有指定内容
# -如果字符串中含有该内容,则会返回其第一次出现的索引
# -如果没有找到指定内容,返回-1
# -indexOf 可以指定第二个参数,指定开始查找的位置 ,如2
var result = str.indexOf('hell') //('p')
console.log(result) // 0 //-1
// 2
var result2 = str.indexOf('h',5) // 10
#lastIndexOf()该方法用法和indexOf一样,不同的是indexOf从前往后找,而lastIndexOf是从后往前
# -也可以指定第二参数
#slice() 可以从字符串中截取指定内容
# -参数一:截取开始位置,参数二,截取结束位置,如果省略第二参数,则会截取到后边所有,也可以传递一个负数作为参数,负数的话会从后边计算
# -该方法不会影响原数组
# -截取到的字符串以返回的方式返回
# -该方法包含开始截取位置,不包含结束位置。
var str = 'djkahdkahdalks'
var result = str.slice(0,2)
console.log(str) //'djkahdkahdalks'
console.log(result) //'dj'
#substring()可以用来截取一个字符串,用法跟slice()类似。
# -参数
# -参数一:开始截取位置的索引,(包括开始位置)
# -参数二:结束截取位置的索引,(不包括结束位置)
# 不同的是:这个方法不能接受负值,传递负值默认使用0,而且他会自动跳转参数位置,如果第二个小于第一个参数,则自动交换
#substr() 用来截取字符串
# 参数
# 参数一:截取开始位置的索引
# 参数二:截取的长度
var str = 'abcdefg'
var result = str.substr(1,3) //bcd
#split() 将一个字符串拆分为一个数组
# 参数 -需要一个字符串作为参数,将会根据该字符串去拆分成数组。
var str = 'abc,edf,jjj,xxx'
var arr = str.split(',') //['abc','edf','jjj','xxx']
#toUpperCase() 将字符串全部转为大写 toLowerCase() 将字符串全部转为小写
var str = 'abcDccc'
var upcase = str.toUpperCase() //ABCDCCC
var lowercase = str.toLowerCase() // abcdccc