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()等效 |