1. 基本包装类型
把简单数据类型包装成了复杂数据类型,这样基本数据类型就有了属性和方法。
var str = 'andy';
console.log(str.length);
对象才有属性和方法;复杂数据类型才有属性和方法
基本包装类型:
//(1)把简单数据类型包装为复杂数据类型
var temp = new String('andy');
//(2)把临时变量的值给str
str = temp;
//(3)销毁这个临时变量
temp = null;
为了方便操作基本数据类型,Javascript还提供了三个特殊的引用类型:String, Number和Boolean
2. 字符串的不可变
指里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
var str = 'abc';
str = 'hello';
//当重新给str赋值,常量'abc'不会被修改,依然在内存中
//重新给字符串赋值,会重新在内存中开辟空间,特点就是字符串的不可变
//由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str = '';
for (var i = 0; i<100000; i++){
str + = i;
}
console.log(str); //这结果需要花费大量时间来显示,需要不断开辟新的空间
3. 根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串不可变),操作完成会返回一个新的字符串。
字符串对象,根据字符返回位置,str.indexOf(‘要查找的字符’,[起始的位置])
var str = '成就如沙堡,生命如海浪';
console.log(str.indexOf('如'));
console.log(str.indexOf('如',3));//从索引号是3的位置开始往后查找
案例
查找字符串"abcoefoxyozzopp"中所有o出现的位置及次数
核心算法:先查找第一个o出现的位置,然后只要indexOf返回的结果不是-1就继续往后查找,因为indexOf只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1,从而继续查找。
var str = "abcoefoxyozzopp";
var index = str.indexOf('o');
var num = 0;
//console.log(index);
while (index !==-1){
console.log(index);
num++;
index = str.indexOf('o',index+1);
}
console.log('o出现的次数是:'+num);
4. 根据位置返回字符
charAt(index)
var str = 'andy';
console.log(str.charAt(3));
//遍历所有字符
for(var i = 0; i<str.length; i++){
console.log(str.charAt(i));
}
charCodeAt(index)
目的:判断用户按下了哪个键
var str = 'andy';
console.log(str.charAt(3));
//遍历所有字符
for(var i = 0; i<str.length; i++){
console.log(str.charAt(i));
}
console.log(str.charCodeAt(0));
str[index]
var str = 'andy';
console.log(str.charAt(3));
//遍历所有字符
for(var i = 0; i<str.length; i++){
console.log(str.charAt(i));
}
console.log(str[0]);
总结
方法名 | 说明 | 返回值 |
---|---|---|
charAt(index) | 返回指定位置的字符(index字符串的索引号) | str.charAt(0) |
charCodeAt(index) | 获取指定位置处字符的ASCII码(index索引号) | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | HTML5, IE8+支持和charAt()等效 |