JavaScript的基本包裝類型

爲了便於操做基本類型值,ECMAScript 提供了3 個特殊的引用類型:Boolean、Number
和String。這些類型與其餘引用類型類似,但同時也具備與各自的基本類型相應的特殊行爲。
實際上,每當讀取一個基本類型值的時候,後臺就會建立一個對應的基本包裝類型的對象,
從而可以調用一些方法來操做這些數據。html

一.基本包裝類型概述正則表達式

  
  
           
  
  
  1. var box = 'Mr. Lee'//定義一個字符串  
  2. var box2 = box.substring(2); //截掉字符串前兩位  
  3. alert(box2); //輸出新字符串 . Lee  
  4. alert(box);  //未改變 說明box2爲副本 

變量box 是一個字符串類型,而box.substring(2)又說明它是一個對象(PS:只有對象才
會調用方法),最後把處理結果賦值給box2。'Mr. Lee'是一個字符串類型的值,按道理它不
應該是對象,不該該會有本身的方法,好比:數組

  
  
           
  
  
  1. alert('Mr. Lee'.substring(2)); //直接經過值來調用方法 

 

  
  
           
  
  
  1. //1.字面量寫法:  
  2. var box = 'Mr. Lee'//字面量  在執行時後臺瞬間建立了基本包裝對象 執行完這行是馬上釋放 box=null
  3. box.name = 'Lee'//無效屬性  
  4. box.age = function () { //無效方法  
  5. return 100;  
  6. };  
  7. alert(box); //Mr. Lee  
  8. alert(box.substring(2)); //. Lee  
  9. alert(typeof box); //string  
  10. alert(box.name); //undefined  
  11. alert(box.age()); //錯誤 

 

  
  
           
  
  
  1. //2.new 運算符寫法:  
  2. var box = new String('Mr. Lee'); //new 運算符  
  3. box.name = 'Lee'//有效屬性  
  4. box.age = function () { //有效方法  
  5. return 100;  
  6. };  
  7. alert(box); //Mr. Lee  
  8. alert(box.substring(2)); //. Lee  
  9. alert(typeof box); //object  
  10. alert(box.name); //Lee  
  11. alert(box.age()); //100 

以上字面量聲明和new 運算符聲明很好的展現了他們之間的區別。但有必定仍是能夠
確定的,那就是無論字面量形式仍是new 運算符形式,均可以使用它的內置方法。而且
Boolean 和Number 特性與String 相同,三種類型能夠成爲基本包裝類型。
PS:在使用new 運算符建立以上三種類型的對象時,能夠給本身添加屬性和方法,但
咱們建議不要這樣使用,由於這樣會致使根本分不清究竟是基本類型值仍是引用類型值。瀏覽器

二.Boolean類型
Boolean 類型沒有特定的屬性或者方法。app

  
  
           
  
  
  1. var falseObject = new Boolean(false);  
  2. var result = falseObject && true;  
  3. alert(result);  //true  
  4.  
  5. var falseValue = false;  
  6. result = falseValue && true;  
  7. alert(result);  //false  
  8.           
  9. alert(typeof falseObject);   //object  
  10. alert(typeof falseValue);    //boolean  
  11. alert(falseObject instanceof Boolean);  //true  
  12. alert(falseValue instanceof Boolean);   //false 
布爾表達式的全部對象都會轉換爲true,所以falseObject對象在布爾表達式中表明的是true。

三.Number類型
Number 類型有一些靜態屬性(直接經過Number 調用的屬性,而無須new 運算符)和方
法。ide

 

 

  
  
           
  
  
  1. var box = 1000.789;  
  2. alert(box.toString()); //轉換爲字符串,傳參能夠轉換進制  
  3. alert(box.toLocaleString()); //本地形式,1,000.789  
  4. alert(box.toFixed(2)); //小數點保留,1000.78  
  5. alert(box.toExponential()); //指數形式,傳參會保留小數點  
  6. alert(box.toPrecision(3)); //指數或點形式,傳參保留小數點 

 

  
  
           
  
  
  1. var numberObject = new Number(10);  
  2.        var numberValue = 99;  
  3.          
  4.        //toString() using a radix  N進制
  5.        alert(numberObject.toString());       //"10"  
  6.        alert(numberObject.toString(2));      //"1010"  
  7.        alert(numberObject.toString(8));      //"12"  
  8.        alert(numberObject.toString(10));     //"10"  
  9.        alert(numberObject.toString(16));     //"a"  
  10.          
  11.        //toFixed()  
  12.        alert(numberObject.toFixed(2));    //outputs "10.00"  
  13.  
  14.        numberObject = new Number(99);  
  15.        alert(numberObject.toPrecision(1));    //"1e+2"  
  16.        alert(numberObject.toPrecision(2));    //"99"  
  17.        alert(numberObject.toPrecision(3));    //"99.0"  
  18.             
  19.        alert(typeof numberObject);   //object  
  20.        alert(typeof numberValue);    //number  
  21.        alert(numberObject instanceof Number);  //true  
  22.        alert(numberValue instanceof Number);   //false 

四.String類型
String 類型包含了三個屬性和大量的可用內置方法。spa

 

String 也包含對象的通用方法,好比valueOf()、toLocaleString()和toString()方法,但這
些方法都返回字符串的基本值。3d

 

 

  
  
           
  
  
  1. var box = 'Mr.Lee';  
  2. alert(box.charAt(1)); //r  
  3. alert(box.charCodeAt(1)); //114  
  4. alert(box[1]); //r,經過數組方式截取 
PS:box[1]在IE 瀏覽器會顯示undefined,因此使用時要慎重。

 

 

  
  
           
  
  
  1. var box = 'Mr.Lee';  
  2. alert(box.concat(' is '' Teacher ''!')); //Mr.Lee is Teacher !  通常使用「+」連接
  3. alert(box.slice(3)); //Lee  
  4. alert(box.slice(3,5)); //Le  
  5. alert(box.substring(3)); //Lee  
  6. alert(box.substring(3,5)); //Le  
  7. alert(box.substr(3)); //Lee  
  8. alert(box.substr(3,5)); //Lee  
  9. var box = 'Mr.Lee';  
  10. alert(box.slice(-3)); //Lee,6+(-3)=3 位開始  
  11. alert(box.substring(-3)); //Mr.Lee 負數返回所有  
  12. alert(box.substr(-3)); //Lee,6+(-3)=3 位開始  
  13. var box = 'Mr.Lee';  
  14. alert(box.slice(3, -1)); //Le 6+(-1)=5, (3,5)  
  15. alert(box.substring(3, -1)); //Mr. 第二參爲負,直接轉0,  
  16. //而且方法會把較小的數字提早,(0,3)  
  17. alert(box.substr(3, -1)); //'' 第二參數爲負,直接轉0 ,(3,0) 
PS:IE 的JavaScript 實如今處理向substr()方法傳遞負值的狀況下存在問題,它會返回
原始字符串,使用時要切記。

 

 

  
  
           
  
  
  1. var box = 'Mr.Lee is Lee';  
  2. alert(box.indexOf('L')); //3  
  3. alert(box.indexOf('L', 5)); //10  
  4. alert(box.lastIndexOf('L')); //10  
  5. alert(box.lastIndexOf('L', 5)); //3,從指定的位置向前搜索 
PS:若是沒有找到想要的字符串,則返回-1。

 

  
  
           
  
  
  1. //示例:找出所有的L  
  2. var box = 'Mr.Lee is Lee'//包含兩個L 的字符串  
  3. var boxarr = []; //存放L 位置的數組  
  4. var pos = box.indexOf('L'); //先獲取第一個L 的位置  
  5. while (pos > -1) { //若是位置大於-1,說明還存在L  
  6. boxarr.push(pos); //添加到數組  
  7. pos = box.indexOf('L', pos + 1); //重新賦值pos 目前的位置  
  8. }  
  9. alert(boxarr); //輸出 

 

 

  
  
           
  
  
  1. var box = 'Mr.Lee is Lee';  
  2. alert(box.toLowerCase()); //所有小寫  
  3. alert(box.toUpperCase()); //所有大寫  
  4. alert(box.toLocaleLowerCase()); //  
  5. alert(box.toLocaleUpperCase()); // 
PS:只有幾種語言(如土耳其語)具備地方特有的大小寫本地性,通常來講,是否本
地化效果都是一致的。

 

正則表達式在字符串中的應用,在前面的章節已經詳細探討過,這裏就再也不贅述了。
以上中match()、replace()、serach()、split()在普通字符串中也可使用。htm

 

  
  
           
  
  
  1. var box = 'Mr.Lee is Lee';  
  2. alert(box.match('L')); //找到L,返回L 不然返回null  
  3. alert(box.search('L')); //找到L 的位置,和indexOf 類型  
  4. alert(box.replace('L''Q')); //把L 替換成Q  
  5. alert(box.split(' ')); //以空格分割成字符串 

 

 

  
  
           
  
  
  1. alert(String.fromCharCode(76)); //L,輸出Ascii 碼對應值 

localeCompare(str1,str2)方法詳解:比較兩個字符串並返回如下值中的一個;
1.若是字符串在字母表中應該排在字符串參數以前,則返回一個負數。(多數-1)
2.若是字符串等於字符串參數,則返回0。
3.若是字符串在自附表中應該排在字符串參數以後,則返回一個正數。(多數1)對象

  
  
           
  
  
  1. var box = 'Lee';  
  2. alert(box.localeCompare('apple')); //1  
  3. alert(box.localeCompare('Lee')); //0  
  4. alert(box.localeCompare('zoo')); //-1 

 

以上是經過JS 生成一個html 標籤,根據經驗,沒什麼太大用處,作個瞭解。

 

  
  
           
  
  
  1. var box = 'Lee'//  
  2. alert(box.link('連接地址')); //超連接
相關文章
相關標籤/搜索