您好,登錄后才能下訂單哦!
這篇文章主要介紹JavaScript中引用類型之基本包裝類型的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
具體如下:
為了操作基本類型值,ECDMAScript提供了3個特殊的引用類型——基本包裝類型Boolean、Number和String。每當讀取一個基本類型值時,后臺會創建一個對應的基本包裝類型的對象。
var str = "Hello world"; var substr = str.substring();
等價于
var str = new String("Hello world");//創建String類型的實例 var substr = str.substring();//在實例上調用substring()方法 str = null;//銷毀實例
基本包裝類型是特殊的引用類型,引用類型與基本包裝類型的區別如下:
(1)對象的生存期
使用new操作符創建的引用類型的實例,在執行流離開當前作用域之前一直存在于內存中,而自動創建的基本包裝類型的對象,只存在于代碼執行瞬間,然后立即被銷毀,也就是說,不能在運行時為基本包裝類型添加屬性和方法。
var str1 = "Hello world"; var str2 = new String("Hello World"); str1.life = 20; str2.life = 20; alert(str1.life);//undefined alert(str2.life);//20
(2)instanceof操作符測試結果
使用instanceof
操作符測試基本包裝類型實例會返回true,測試基本類型值會返回false。
var str1 = "Hello World"; var str2 = new String("Hello world"); alert(str1 instanceof String);//false alert(str2 instanceof String);//true
可以顯式地調用Boolean、Number、String來創建基本包裝類型的對象,但盡可能不要這樣做,因為這樣不易區分是在處理基本類型還是引用類型。
Object構造函數會根據傳入值的類型返回相應基本包裝類型的實例。
var str = new String("Hello world"); alert(str instanceof String);//true var num = new Number(16); alert(num instanceof Number);//true var bool = new Boolean(true); alert(bool instanceof Boolean);//true
對基本包裝類型的實例調用typeOf()
方法會返回"Object",實例變量中保存的是基本類型值。
var str = new String("Hello world"); alert(typeof str);//object var num = new Number(16); alert(typeof num);//object var boolean = new Boolean(true); alert(typeof boolean);//object
使用new
操作符調用基本包裝類型的構造函數,與直接調用同名的轉型函數是不同的,變量中保存的是基本包裝類型的實例。
var str = String("Hello world"); alert(typeof str);//string var num = Number(16); alert(typeof num);//number var bool = Boolean(true); alert(typeof bool);//boolean
所有基本包裝類型的對象在轉換為布爾類型時值都是true。
var boolean1 = new Boolean(false); alert(boolean1);//false alert(boolean1 && true);//true var boolean2 = new Boolean(0); alert(boolean2);//false alert(boolean2 && true);//true var boolean3 = new Boolean(""); alert(boolean3);//false alert(boolean3 && true);//true
1、Boolean類型
var boolean = new Boolean(true);
Boolean類型的實例重寫了valueOf()
方法,返回對應的基本類型值true和false;重寫了toString()
方法,返回字符串"true"和"false"。
2、Number類型
var num = new Number(16);
Number類型也重寫了繼承的valueOf()
、toString()
、toLocaleString()
方法,重寫后的valueOf()
方法返回對應的基本類型值,另外兩個方法返回對應的字符串。可以為toString()方法傳遞一個表示基數的參數。
除了繼承的方法外,Number還提供了將數值格式化為字符串的方法:
(1)toFixed()
方法:傳入的參數為小數位數,返回數值的字符串表示。
(2)toExponential()
方法:傳入的參數為小數位數,返回以指數表示法表示的數值的字符串形式。
(3)toPrecision()
方法:傳入的參數為數值的所有數組位數,不包含指數部分,返回指定格式的字符串表示。
3、String類型
var str = new String("Hello world");
String類型繼承的valueOf()
、toString()
、toLocaleString()
方法返回對象所表示的字符串值。
(1)String類型實例的屬性。
length屬性:表示字符串包含的字符個數。
(2)String類型實例的方法。
---字符方法
不會修改字符串本身的值,只是返回子字符串,對原始字符串沒有影響。
1)charAt()
方法:傳入的參數為基于0的字符位置,返回給定位置的字符。
2)charCodeAt()
方法:傳入的參數為基于0的字符位置,返回給定位置的字符編碼。
---字符串操作方法
1)concat()
方法:傳入的參數為任意多個字符串,返回拼接得到的字符串。
2)substr()
、slice()
、substring()
方法:三個基于子字符串創建新字符串的方法,傳入一或兩個參數,返回子字符串。第一個參數指定子字符串的開始位置,第二個參數可選,slice()
和substring()
的第二個參數指定子字符串的結束位置,substr()的第二個參數指定子字符串的長度。當傳入的參數是負數時,slice()
方法會將負值與字符串長度相加,substr()
方法將第一個負值加上字符串長度,而第二個負值轉換為0,substring()
方法將所有負值都轉換為0。
---字符串位置方法
搜索給定的子字符串,返回子字符串的位置,未搜索到則返回-1。第一個參數指定搜索的子字符串,第二個參數可選,指定搜索開始的位置。---
1)indexOf()
方法:從頭開始向后搜索。
2)lastIndexOf()
方法:從后開始向前搜索。
---trim()
方法
創建一個字符串的副本,刪除前綴和后綴的空格,返回新字符串,原始字符串不變。
---字符串大小寫轉換方法
1)toLowerCase()
方法:通用的小寫轉換方法。
2)toUpperCase()
方法:通用的大寫轉換方法。
3)toLocaleLowerCase()
方法:針對特定地區的小寫轉換方法。
4)toLocaleUpperCase()
方法:針對特定地區的大寫轉換方法。
---字符串模式匹配方法
1)match()
方法:在字符串上調用match()方法,與在RegExp實例上調用exec()方法相同。接收1個參數——正則表達式或RegExp對象。返回一個數組,數組的第一項是與整個模式匹配的字符串,之后的每一項是與各個子模式匹配的字符串。
2)search()
方法:從頭開始向后查找。接收1個參數——正則表達式或RegExp對象。返回第一個匹配項的索引,未找到匹配結果則返回-1。
3)replace()
方法:替換字符串。接收2個參數——第一個參數是一個正則表達式或RegExp對象或字符串(字符串不會被轉換為正則表達式),第二個參數是一個字符串或函數。若第一個參數是字符串,則只會替換第一個子字符串,若想替換所以子字符串,需要使用帶有g標志的RegExp對象。
a、第二個參數為字符串時,使用特殊的字符序列,將正則表達式操作得到的值插入到結果字符串中。
特殊的字符序列 | 替換文本 |
---|---|
$$ | $ |
$& | 匹配整個模式的子字符串 |
$' | 匹配的子字符串之前的子字符串 |
$` | 匹配的子字符串之后的子字符串 |
$n | 匹配第n個子模式的子字符串,n等于0-9.若正則表達式中沒有定義子模式,則使用空字符串 |
$nn | 匹配第nn個子模式的子字符串,nn等于01-99.若正則表達式中沒有定義子模式,則使用空字符串 |
var str = "cat, fat, eat"; var result = str.replace(/(.at)/g, "my($1)"); alert(result);//my(cat), my(fat), my(eat)
b、第二個參數為函數時,可以實現更為精細的替換操作。
在只有一個匹配項(即與模式匹配的字符串)時,向函數傳遞3個參數——模式的匹配性、模式匹配項在字符串中的位置和原始字符串。在正則表達式中定義了多個子模式的情況下,向函數傳遞的參數依次是模式的匹配項、第一個子模式的匹配項、第二個子模式的匹配項、......、模式匹配項在字符串中的位置和原始字符串。返回替換文本。
var str = "<a href = \"test.jsp\">link</a>"; var result = str.replace(/[<>"&]/g, function(match, positon, originalStr) { switch(match) { case "<": return "<"; case ">": return ">"; case "&": return "&"; case "\"": return """; } }); alert(result);//<a href = "test.jsp">link</a>
4)split()
方法:第一個參數為分隔符(字符串或RegExp對象,字符串不會被轉換為正則表達式),第二個參數可選,指定返回的字符串數組的大小。返回分割后的字符串數組。
var strs1 = str.split("|", 2);//["cat","fat","eat"] var str = "cat|fat|eat"; var strs1 = str.split("|"); alert(strs1);//cat,fat,eat var strs2 = str.split("|", 2); alert(strs2);//cat,fat var strs3 = str.split(/[^\|]+/); alert(strs3);//,|,|,
strs3的分隔符為“cat”、"fat"、“eat”,因此返回的數組第一項和最后一項時空字符串。
---localeCompare()方法:
比較兩個字符串,若字符串在字母表中應該排列在字符串參數之前,返回一個負數(大多數情況是-1),若在之后,返回一個正數(大多數情況是1),若相等,返回0。
alert("world".localeCompare("hello"));//1
---fromCharCode()方法:
String類的靜態方法,接收一或多個字符編碼,轉換為字符串,與charCodeAt()
是相反的操作。
alert(String.fromCharCode(104, 101, 108, 108, 111));//"hello"
以上是“JavaScript中引用類型之基本包裝類型的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。