字符串内置功能以及包装对象
一、字符串内置功能

1、比较重要的字符串内置功能
1.toUpperCase(),toLocaleLowerCase()
var str = "post"
var re = str.toUpperCase() //转大写
var re2 = str.toLocaleLowerCase() //转小写
var re3 = str[1] //字符串也有下标
var re4 = str.length //字符串也有length
console.log(re, re2, re3, re4);
结果:

2.substr()
var str = "hello"
var re = str.substr(2, 2)
//从下标2开始,截2个字符,不会改变原字符串
//from可以是负数,-1为o,-2为l,-3为l
console.log(re, str);
结果:

3.substring()
var str = "hello"
var re = str.substring(1, 3)
//左开右闭(1,3]第start个元素到第end个元素
//不改变原字符串
console.log(re, str);
结果:

4.split()
var str = "hello"
var re = str.split("")
//截取出来,放在数组中,不改变原字符串
//剪""是每一个都剪放在数组中,剪不存在的是剪整个
console.log(re, str);
结果:

5.slice(),substring()
var str = "hello"
var re1 = str.slice(2, 4)
//slice与substring一样的
var re2 = str.substring(2, 4)
// //左开右闭(1,3]第start个元素到第end个元素
// //不改变原字符串
console.log(re1, re2, str);
结果:

6.indexOf()
var str = "abcdef"
var re = str.indexOf("b", 2)
//返回子串在字符串中的下标,字符串没有这个子串就是-1
//第二个参数不写默认为0,从下标2开始检索
console.log(re, str);
结果:
7.valueOf()
var str = "hello"
var strobj = new String("hqyj")
var re = str.valueOf()
var re1 = strobj.valueOf()
console.log(re, strobj, re1, typeof strobj);
结果:
str.charAt()
var str = “HELLO WORLD”;
var n = str.charAt(2)
//返回字符串中的第三个字符,即’L’。
parseInt(‘34’, 37)
var c = parseInt('34', 37); //第二个参数超出规定范围,所以结果转为NaN
console.log(c); //NaN
var d = parseInt('34', 36); //判断’34’ 是否为36进制数字,如果是,则转换成整数;如果不是,则返回NaN
console.log(d); // 112
var e = parseInt('101', 2); // ‘101’ 属于 指定的 二进制 转为整数并自动转为十进制
console.log(e); // 5
var f = parseInt('102', 2); //将有效的二进制部分转成整数并转成十进制
console.log(f); //2
var g = parseInt('201', 2); //开头部分没有符合二进制的部分
console.log(g); // NaN
二、包装对象
1.
var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1,s.length);
这里变量s只是一个字符串原始类型,它怎么会有属性(s.length)和方法(s.indexOf()、s.substring())呢?没错,这正跟我们正要介绍的包装对象有关
原因是:只要引用了字符串s的属性,JavaScript就会将字符串值通过调用new String(s)的方式转换成对象,这个对象继承了字符串(String)对象的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会被销毁。
同字符串一样,数字和布尔值也有各自的方法:通过Number()和Boolean()构造函数创建一个临时对象。存取字符串、数字或布尔值的属性时创建的临时对象就是包装对象。5种原始类型中的剩余两种null和undefined没有包装对象:访问它们的属性会造成一个类型错误(Uncaught TypeError)
2.
var s = "test";
s.len = 4;//给它设置一个属性
var t = s.len;
console.log(t);//undefined
有人会认为最后t就是等于4了。难道最后t不等于4吗?是的,最后t的值是undefined 。想知道为什么请看继续看解析:这里第二行代码只是创建了一个临时字符串对象,并给len属性赋值为4,随即销毁这个对象。而第三行又是通过原始字符串s创建一个新字符串对象(这个不是第二行代码创建的对象,第二行代码创建的对象已经被销毁了)并尝试读取其len属相,这个属性自然不存在,因此表达式的结果为undefined。这段代码说明了在读取字符串、数字和布尔值的属性值或方法(实际上是它们对应包装对象的属性值或方法)表现的像对象一样。但如果你试图给属性赋值,则会忽略这个操作:修改只是发生在临时对象身上,而这个临时对象并不会继续保留下来。
本文详细介绍了JavaScript字符串的内置功能如大小写转换、切片、分割等,以及包装对象如何处理字符串操作。重点讲解了toUpperCase(), toLowerCase(), substr(), substring(), split(), indexOf(), toValue(), charAt()和parseInt()等方法。同时揭示了包装对象的本质和为何能实现这些操作。


被折叠的 条评论
为什么被折叠?



