基本包裝類型

(1)值類型:數值、布爾值、null、undefined。

(2)引用類型:對象、數組、函數。

為了方便操作,JavaScript提供了3個特殊的引用類型:Boolean、Number和String。實際上,每當讀取一個基本類型值(boolean、number、string)的時候,后臺就會創(chuàng)建一個對應的基本包裝類型的對象,從而可以調用這些類型的方法來操作數據。

var s1 ="hello javascript";

var s2 = s1.substring(2);

在上面的例子中,s1是一個字符串,是基本類型值。而s1調用了substring()方法,理論上基本類型值不是對象,它們不應該有方法的。其實,為了實現這種操作,后臺已經自動完成了一系列的處理。當第二行代碼訪問s1時,會完成下面一系列操作:

1、創(chuàng)建String類型的一個實例; var s1 = new String("some text");

2、在實例上調用指定的方法; ?var s2 = s1.substring(2);

3、銷毀這個實例 ?s1 = null;

引用類型和基本包裝類型的主要區(qū)別就是對象的生存期。使用new操作符創(chuàng)建的引用類型的實例,在執(zhí)行流離開當前作用域之前都一直保存在內存中。而自動創(chuàng)建的基本包裝類型的對象,則只存在于一行代碼的執(zhí)行瞬間,然后立即被銷毀

vars1 ="hello";

s1.name ="Jack";

alert(s1.name); ? ?// undefined

對基本包裝類型的實例調用typeof會返回object。

Object構造函數會根據傳入值的類型返回相應的基本包裝類型:

var obj1 =new Object("hello");

var obj2 =new Object(12);

var obj3 =new Object(true);

alert(obj1 instance of String);// true

alert (obj2 instance of Number);// true

alert(obj3 instance of Boolean);// true

注意,使用new調用基本包裝類型的構造函數,與直接調用同名的轉型函數不一樣:

var val ="10";

var num = Number(val); ?// 轉型函數(用于轉換參數類型的函數)

alert (typeof num); ? // 類型是number

var obj =new Number (val); ? // 構造函數

alert (typeof obj);// 類型是object

Boolean類型

Boolean是與boolean(布爾值)相對應的基本包裝類型

在布爾表達式中使用Boolean對象時要特別注意:布爾表達式中的所有對象都會被轉換為true。

var? falseObj = new Boolean (false);? // falseObj變?yōu)榱藅rue

var ?result = falseObj &&true;

alert (result); ? // true

var falseVal =false; ?//直接用的布爾類型值,仍然是false

result = falseVal &&true;

alert(result); ?// false

基本類型與引用類型的布爾值還有兩個區(qū)別:

typeof操作符對基本類型返回“boolean”,而基本包裝類型返回“object”

使用instanceof操作符測試Boolean對象會返回true,而測試基本類型的布爾值則返回false。

alert (typeof falseObj); ?// 基本包裝類型返回object

alert(typeof falseVal); ?// 基本引用類型返回boolean

alert(falseObj? instanceof? Boolean);// 基本包裝類型返回true

alert(falseVal? instanceof? Boolean);// 基本引用類型返回false

Number類型

(1)toFixed()方法會按照指定的小數位返回值得字符串表示。

var ?num1 =11;

alert ?(num1.toFixed(2)); ? // "11.00"

var ?num2 =11.005;

alert ?(num1.toFixed(2)); ?// "11.01"

(2)toExponential()方法用于格式化,返回指數表示法。

var num =11;

alert ?(num.toExponential(1));? ? // “1.0e+1”

(3)toPrecision()方法可能返回固定大小格式,也可能返回指數格式??梢越邮找粋€參數,表示數值的所有數字的位數(不含指數部分)

var num =99;

alert(num.toPrecision(1));? // "1e+2",即100,無法準確表示99

alert(num.toPrecision(2));? // "99"

alert(num.toPrecision(3));? // "99.0"

與Boolean類型相似,使用typeof和instanceof操作基本類型數值和引用類型數值時,得到的結果完全不同。

String類型

1、字符方法

兩個用于訪問字符串中特定字符的方法:charAt()和charCodeAt()。

charAt():以單字符串的形式返回給定位置的那個字符

charCodeAt():返回字符的編碼

var strVal ="hello";

alert(strVal.char(1));? // "e"

alert(strVal.charCodeAt(1));? ? // "101"

2、字符串操作方法

concat()、slice()、substr()、substring()

3、字符串位置方法

indexOf()、lastIndexOf()

4、刪除空格

trim()會創(chuàng)建一個字符串的副本,刪除前置及后綴的所有空格,然后返回結果。

5.字符串大小寫轉換方法

toLocaleUpperCase()、toUpperCase()、toLocaleLowerCase()、strVal.toLowerCase()

6.字符串模式匹配方法

(1)match()

var ?text ="cat, bat, sat, fat";

var ?pattern =/.at/ ?;

var ?matches = text.match(pattern);

alert (matches.index);// 0

alert (matches[0]);// "cat"

alert (pattern.lastIndex);// 0

(2)search()

var ?text ="cat, bat, sat, fat";

var ?pos = text.search(/at/);

alert(pos);// 1

(3)replace()

var ?text ="cat, bat, sat, fat";

var ?result = text.replace("at","ond");

alert(result); ? ? ? // cond, bat, sat, fat

result = text.replace (/at/g,"ond");

alert(result); ? ? ? // cond, bond, sond, fond

(4)split()

7、localeCompare()方法

localeCompare()用于比較兩個字符串,并返回下列結果之一:

如果字符串在字母表中應該排在字符串參數之前,則返回一個負數(多數情況為-1,具體由實現而定)

如果字符串等于字符串的參數,則返回0;

如果字符串在字母表中應該排在字符串參數之后,則返回一個整數(多數情況為1,具體由實現而定)

8.fromCharCode()

String構造函數本身有一個靜態(tài)方法:fromCharCode()。這個方法的任務是接收一或多個字符編碼,然后將它們轉換成一個字符串。

alert (String.fromCharCode(104,101,108,108,111));? ? // "hello"

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容