内容要點:
1、基本包裝類型
2、Boolean類型
3、Number類型
4、String類型
背景:
為了便于操作基本類型的值,ECMAScript提供了3種特殊的引用類型:Booloean、String、Number
這些類型與其他引用類型相似,但卻同時具有各自的基本類型相應的特殊行為。
實際上,沒讀取一個基本類型值,背景就會建立出一個對應的基本包裝類型的對象,用調用來操作資料。
1、基本包裝類型
var box='Lee';
alert(box); //Lee
alert(typeof box); //string
alert(box.substring(2)); //對象.方法(),明顯是引用類型的寫法
//雖然它是基本類型,但也是特殊的引用類型,它可以調用系統内置的方法。
(引用類型除了object自身,還包括number、String、RegExp正規表達式)
(1)字面量寫法
var box='Lee'; //基本類型;
box.name='Mr.Lee' //給基本類型加屬性;
box.age=function(){ //給基本類型加方法;
return 10;
};
alert(box);
alert(typeof box); //string;
alert(box.name); //undefined;
alert(box.age()); //出錯;
//基本類型無法給自己建立屬性和方法,但可以調用内置屬性和方法;
(2)new運算符寫法
new為引用類型,可以為自己建立屬性和方法
var box=new String('Lee'); //引用類型,String的引用類型
box.name='Ms.Lee';
box.age=function(){
return 10;
};
alert(box);
alert(typeof box); //object;
alert(box.substring(2)); //有效;
alert(box.name); //自定義屬性有效;
alert(box.age()); //自定義方法有效;
(注意:若用String建立時,與Object建立對象沒有什麼差別,一般不建議這樣用)
總結:
字面量方法不能自定義屬性和方法;
new運算符可以自定義屬性和方法。
2、Boolean類型
該類型,沒有自定義屬性和方法
3、Number類型
具備靜态方法和方法,即直接通過number調用的屬性,而無需new運算符
案例3-1:靜态屬性
var box=100;
alert(box.MAX_VALUE); //寫法叫屬性;
alert(Number.MAX_VALUE); //這種寫法叫做靜态屬性;
(1)靜态屬性
MAX_VALUE——最大值
MIN_VALUE——最小值
NaN——非數值
prototype——原型,用于添加新屬性和方法。
(2)對象的方法
toString()——将數值轉換為字元串
toLocaleString()——根據本地數字格式轉化為字元串
toFixed()——将數字儲存到小數點後指定位數并轉化為字元串
toExponential()——将數字以指數表示,儲存小數點到指定位數并轉化為字元串
toPrecision()——指數形式或點表示,保留小數點到是定位位數并轉換為字元串
案例3-2:對象的方法
var box=1000.234;
alert(box.toFiexd(2)); //表示小數點保留兩位,并進行四舍五入;
alert(box.toExponential()); //表示以指數形式,并轉化字元串,類似于該值除以1000的值,以“e”連接配接表示
alert(box.toPrecision); //10以上以指數表示,小于10以小數點表示。
4、String類型
有3種屬性和大量内置方法
(1)對象屬性:length——傳回字元串長度
constructor——傳回建立String對象的方法
prototype——通過添加屬性和方法擴充字元串定義
(2)對象通用方法:valueOf()、toLocaleString()、toString(),這些方法均傳回字元串的基本值
(3)字元方法:charAt(n)——傳回索引的(從0開始)
charCodeAt(n)——傳回以索引的從0開始的unicode編碼。
(4)字元串操作方法:concat(str1...str2)——表示參數字元串的連接配接,即将字元串參數串聯到調用該方法的字元串
slice(n,m)——表示從n到m的字元串
substring(n,m)——同上
substr(n,m)——傳回字元串從n開始,m個字元串
(5)字元串位置方法:indexof()——傳回從初始位置到字元串參數第一次出現的位置
lastIndexOf()——傳回從末尾位置到字元串參數第一次出現的位置
案例4-1:
var box='Mr.Lee';
alert(box.length); //7
案例2:字元串方法
alert(box.charAt(1)); //r
alert(box.charCodeAt(4)); //傳回L的ASCII的編碼
案例3:字元串操作方法
3-1:正數
var box='Mr.Lee';
alert(box.slice(4,6)); //Lee
alert(box.substring); //Lee
alert(box.substr(4,6)); //從第四個開始,選6個
3-2:有1個負數
var box='Mr.Lee';
alert(box.slice(-2)); //7+(-2)=5,從第五位開始取,即ee
alert(box.substring(-2)); //負數,即傳回全部的字元串;
alert(box.substr(-2)); //與slice()方式相同;
3-3:有2個參數
alert(box.slice(2,-1)) ; //7+(-1)=6 ,即從2到6的位數
alert(box.slice(-2,-1)); //7+(-1)=6,7+(-2)=5,(5,6),e
alert(box.substring(2,-1)); //參數如果是負數,直接定為0,若第二個參數比第一個小,則互換位置,從(2,0)到(0,2)
alert(box.substr(2,-1)); //第二個參數為負數,直接為0,(2,0),傳回空
案例4:字元串位置方法
var box='Mr.Lee is Lee';
alert(box.indexOf('L')); //4,
alert(box.lastIndexOf('L')); //11;
alert(box.indexOf('L',5)); //11,傳回從第五個位置向後搜尋開始到L第一次出現的位置
alert(box.lastIndexOf('L')); //4,傳回從第五個位置開始向前搜尋到L第一次出現的位置
擴充——搜尋所有L
var box='Mr.Lee is Lee, hello Lan';
var boxarr=[];
var pos=box.indexOf('L');
while(pos>-1){
boxarr.push(pos);
pos=box.indexOf('L',pos+1);
}
alert(boxarr); //4,11,21
(6)轉換大小寫
toLowerCase()
toUpperCase()——轉換為大小寫
toLocaleLowerCase()
toLocaleUpperCase()——本地特有的大小寫
(7)字元串正規表達式方法
match()——傳回查找的字元或者null
replace(n,m)——表示用m替換n
search()——查詢所在的位置
split()——表示某一個符号或字元分割數組
案例7
var box='Mr.Lee';
alert(box.match('L')); //找到L傳回L
alert(box.search('L')); //找到L的位置;
alert(box.replace('L','Q')); //将Q代替L
alert(box.splice(' ')); //分割為數組,若以空格分割,即為“Mr”和“Lee”
(8)其他方法
localeCopare()——字元串比較,傳回0,1,-1
案例8-1:比較字元串大小
var box='Lee';
alert(box.localeCompare('Lee')); //0
alert(box.localeCompare('Aee')); //1,A在L之前,傳回1
alert(box.localeCompare('Zee')); //-1,Z在L之後,傳回-1