一、3个包装类
通过这三个包装类可以基本数据类型转换为对象
String()
-可以将基本数据类型字符串转换为String对象
Number()
-可以将基本数据类型数字转换为Number对象
Boolean()
-可以将基本数据类型布尔值转换为Boolean对象
注意:
我们在实际应用中不会使用基本数据类型的对象,如果使用基本数据类型的对象,在做一些比较时,会带来一些不可预估的结果
代码演示
<script>
//创建一个Number类型的对象
var num=new Number(3);
var str=new String("hello");
var bool=new Boolean(true)
num.hello="abc你好"
//console.log(typeof num)//object
console.log(num.hello)//abc你好
/*
方法和属性只能添加给对象,不能添加给基本数据类型
当我们对一些基本数据类型的值去调用属性和方法时,
浏览器会临时使用包装类将其转换为对象,然后再调用对象的属性跟方法
调用完以后,再将其转换为基本数据类型
*/
var s=123
s=s.toString()
console.log(s,typeof s);
</script>
二、字符串方法
常用方法
1 charAt/charCodeAt
charAt根据索引获取指定位置的字符
charCodeAt不仅仅获取字符,它获取的是字符对应的Unicode编码值(ASC ll码值)10进制
参数:索引
返回:字符或者对应的编码
2 indexOf / lastIndexOf
可以获取字符串在字符串中第一次或者最后一次出现位置的索引,若有这个字符返回值大于等于0,不存在为-1
indexOf:
返回 :String 对象内第一次出现子字符串的字符位置。
参数 strObj 必选项。String 对象或文字。
lastindexOf:
返回 :String 对象中子字符串最后出现的位置。
参数:strObj必选项。String 对象或文字。
3 slice
str.slice(n,m)从索引n开始找到索引M处(不包含M),把找到的字符当作字符串返回, 支持负数索引,用字符串的总长度+负数索引做运算
参数:slice(start, end)
返回:一个新的字符串
4 substring
和slice语法一样,唯一的区别在于:slice 支持负数索引,而substring不支持负数索引
参数:substring(start,stop)
返回:一个新的字符串
5 substr
str.substr(n,m)从索引n开始截取m个字符 m是截取的个数,和substring 一样,第二个参数不传。截取到末尾,但是它支持第一个索引为负数,负数也是总长度+负数索引
参数:substr(start,length)
返回值:一个新的字符串
6 toUpperCase/toLowerCase
实现字母的大小写转换 toUpperCase 小写转大写 toLowerCase 大写转小写
toUpperCase()
返回值:一个新的字符串
参数:stringObject.toUpperCase()
toLowerCase()
返回值:返回转换后字符的小写形式,如果有的话;否则返回字符本身
参数:char toLowerCase(char ch)
7 split
和数组中的join 相对应,数组中的join是吧数组每一项按照指定的连接符变为字符串,而split是把字符串按照指定的分隔符拆分成数组中的每一项
参数:str.split(str="", num=string.count(str))
返回值:返回分割后的字符串列表。
8 replace
作用:替换字符串中的原有字符 参数:原有字符,要替换新字符 返回:替换后的字符串
返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。
代码演示
<script>
var str="hello"
/* 在底层字符串是以字符数组的形式保存的 ["h","e","l","l","o"] */
/*1:length属性
-可以获取字符串的长度 */
console.log(str.length);//5
/*2:charAt()
-可以返回字符串中指定位置的字符,根据索引获取指定的字符 */
var res=str.charAt(0);//h
console.log(str[0]);//h
/* 3:charCodeAt()
-获取指定位置字符的字符编码(Unicode编码) */
var res=str.charCodeAt(0);//104
/* 4:formCharCode()
-可以根据字符编码去获取字符
-通过构造函数调的,String.fromCharCode(); */
res=String.fromCharCode(104);//h
/*5: concat()
-可以用来连接两个或者多个字符串
-作用和+一样 */
res=str.concat(",你好",",再见")//hello,你好,再见
/*6: indexof()
-该方法可以检索一个字符串中是否含有指定内容
-如果字符串中含有该内容,则会返回其第一次出现的索引
如果没有找到指定的内容,则返回-1
-可以指定第二个参数,指定开始查找的位置 */
res=str.indexOf("p") //-1
/* 7: lastIndexOf()
-该方法的用法和indexOf()一样,不同的是lastIndexOf是从后往前找 */
res=str.lastIndexOf("l")//3
/*8: slice()
-可以从字符串中截取指定的内容
-不会影响原字符串,而是将截取到的内容返回
-参数:
第一个,开始位置的索引(包括开始位置)
第二个,结束位置的索引(不包括结束的位置)
-如果省略第二个参数,则会截取后边所有的
-也可以传递一个负数作为参数,负数的话将会从后边计算 */
res=str.slice(0,2)//he
/*9: substring()
-用来截取一个字符串,跟slice()类似
-参数:
第一个,开始位置的索引(包括开始位置)
第二个,结束位置的索引(不包括结束的位置)
-如果省略第二个参数,则会截取后边所有的
-跟slice()不同的是这个方法不能接收负值作为参数
如果传递了一个负值,则默认使用0
而且他还会自动调整参数的位置,如果第二个参数小于第一个
则自动交换 */
/*10: substr()
-用来截取字符串
-参数:
1:截取开始位置的索引
2:截取的长度
*/
res=str.substr(0,3);//hel
/*11: split()
-可以将一个字符串拆分为一个数组
-参数
需要一个字符串作为参数,将会根据该字符串去拆分数组
如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素
*/
str="abc,bcd,efg,hij"
res=str.split(",")
/*12: toUpperCase()
-将一个字符串转换为大写并返回 */
str="abcdefg";
res=str.toUpperCase()
/*13: toLowerCase()
-将一个字符串转换为小写并返回 */
str="ABCDEFG";
res=str.toLowerCase()
console.log(res)
</script>