天天看點

Javascript進階程式設計——12.基本包裝類型

内容要點:

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
           

繼續閱讀