JS:字符串的内置函数(indexOf()、toString()、valueOf())和包装对象
一些字符串的内置函数:
indexOf()
1、indexOf()返回指定的字符串值在字符串中首次出现的位置。如果没有找到则返回 -1。
方法:(searchString: string, position?: number): number
找到字符串中l的位置:
var str = 'hello'; var re = str.indexOf('l'); console.log(re); //2
找到字符串中是有a:
var str = 'hello'; var re = str.indexOf('a'); console.log(re); //-1
toString()
2、toString()把一个逻辑值转换为字符串,并返回结果。
var str="hello"; var re=str.toString(); console.log(re); //hello
valueOf()
3、valueOf()返回 String 对象的原始值。
var str=new String("hello"); var re=str.valueOf(); console.log(str,typeof str,re);
打印结果:
包装对象:
这里变量str只是一个字符串原始类型,它怎么会有属性(length)和方法(indexOf()substring())呢?
原因是:只要引用了字符串str的属性,JavaScript就会将字符串值通过调用new String(str)的方式转换成对象,这个对象继承了字符串(String)对象的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会被销毁。
同字符串一样,数字和布尔值也有各自的方法:通过Number()和Boolean()构造函数创建一个临时对象。存取字符串、数字或布尔值的属性时创建的临时对象就是包装对象。5种原始类型中的剩余两种null和undefined没有包装对象:访问它们的属性会造成一个类型错误(Uncaught TypeError)。