5.6 JS中基本封裝類型

來源:互聯網
上載者:User

標籤:介紹   定義   使用   問題   尋找   就會   object   處理   訪問   

為了便於操作基本類型值,ES還提供了三種特殊的參考型別,即(基本封裝類型):Number,String,Boolean。這三種類型與前面介紹的參考型別相似,但同時也擁有基礎資料型別 (Elementary Data Type)的一些特性。

平時經常看到人家代碼裡建立了一個字串/數字類型,然後使用字串/數字類型的一些方法,比如,split()、substring()等等,搞得我們誤以為這些方法是基本封裝類型擁有這些方法。其實,我們這種理解是錯誤的。實際上,當我們操作基本封裝類型資料時,在後台就會悄悄的建立一個對應的基本封裝類型的對象。因為是對象呀,所以我們才能夠調用對象所擁有的方法。

舉個例子:

var str = "hello,1024idea";var strSub = str.substring(2,7);console.log(strSub);//llo,1

執行上面代碼,其實,在後台會執行如下步驟:

  1. 建立基本封裝類型的對象執行個體
  2. 調用對象執行個體的函數
  3. 銷毀這個對象

如下所示:

var str = "hello,1024idea";var str2 = new String(str);var strSub = str2.substring(2,7);str2.null;console.log(strSub);//llo,1

參考型別與基本封裝類型的區別:在於對象的生命週期。

使用new關鍵字建立的參考型別的執行個體,對象在當前範圍都存在。而基本封裝類型自動建立的對象則在對象被調用的時刻存在,調用完畢後,就被銷毀不存在了。

Object()建構函式,可以根據你傳入的參數的類型,返回基本封裝類型的執行個體。你傳入字串,則返回String類型的執行個體;傳入數字,則返回Number類型的執行個體;傳入布爾值,則返回Boolean類型執行個體。如:

var obj = new Object("hello,1024idea");console.log(obj instanceof String);// true

注意:使用new關鍵字建立的建構函式與使用同名的轉型函數的效果是不一樣的。如:

// 建構函式與轉型函數傳回值的區別var str = "1024";var strObj = new String(str);console.log(typeof strObj);//objectvar strNum = Number(str);console.log(typeof strNum);//number

這個例子中,變數strObj儲存的是object類型,而變數strNum儲存的是number類型。

一般情況下,是不建議手動的去建立基本封裝類型的對象,因為這樣經常造成的問題是,分不清自己是在處理基本封裝類型還是參考型別。

 

Boolean類型

Boolean類型是布爾值建立的參考型別。建立Boolean類型,可以使用Boolean建構函式去建立,並傳入true或者false參數。如:

var booleanObject = new Boolean(true);

注意:在布林運算式中使用Boolean對象,我們可能會出錯的一些地方,如:

var booleanObj = new Boolean(false);var result = booleanObj && true;console.log(result);

你覺得上面會列印出什麼結果呢?大多數人可能會說是false,因為一真一假嘛,所以為false。但是,事實上結果是true,因為booleanObj是一個對象,在布林運算式中,所有的對象都會被轉換為true。記住:參考型別的布爾值,其實是對象。

當然,我們不推薦這麼用(不推薦用參考型別的布爾值來判斷布林運算式)

 

Number 類型

Number類型是數字值建立的參考型別。建立Number類型,使用Number類型的建構函式,可以傳遞數字值參數,如:

var numberObj = new Number(1024);

這裡介紹一個Number類型的一個方法:numberObj.toFixed();可以接受一個數值,表示保留的小數的個數(會自動四捨五入)。在平時項目中,我們經常要處理價格問題或者增長率問題,即保留多少為小數,用這個方法非常有效。

// Number 類型var numberObj = new Number(1024.153);console.log(numberObj.toFixed(2));//1024.15console.log(numberObj.toFixed(1));//1024.2

 

String類型

String類型是字串值建立的參考型別。

String類型建立的方式,使用String建構函式建立,可以傳入字串參數;如:

var stringOjb = new String("hello,1024idea");

String類型的每個執行個體都有一個length屬性,用於計算字串的長度(即字串中包含多少個字元)。

字元方法:charAt(),charCodeAt(),接受一個數字參數,返回某個數字索引位置的字元或字元編碼。

在ES5還定義了另一個訪問字串中某個字元的方法,在支援ES5的瀏覽器中,可以用方括弧[]來訪問。

// String類型var str = "hello,1024idea";console.log(str.charAt(4));//oconsole.log(str.charCodeAt(4));//111console.log(str[4]);//o

字串的操作方法:concat(),可以將多個字串串連起來。返回得到的新字串。

var str1 = "hello,";var str2 = str1.concat("1024idea");console.log(str2);//hello,1024idea

其實,實踐中,我們平時用的多的還是用“+”去拼接字串。

slice(),substring(),substr().這三個是截取字串的函數。其中,slice()跟substring()非常類似,第一個參數都是截取的起始位置,第二個參數是截取的終止位置;而substr()第一個參數是起始位置,第二個參數則是需要截取的長度。
這三個函數,都不改變原本的字串,只是在原先的字串上建立了一個副本。返回操作副本後的值。

字串的位置方法:indexOf(),lastIndexOf();從索引0的位置開始查詢子字串/從最後一個索引開始尋找字串。如果找到,則返回子字串的位置,如果沒有找到,返回-1;第一個參數為要尋找的子字串,第二個參數 可選的,如果有,則表示從某個位置開始尋找。

ES5中還定義了trim()方法,去除字串的開頭和結尾的所有空格。此外,對於firefox,safari,chrome的後面的一些版本中,還支援非標準的trimLeft()和trimRight()方法,用於刪除字串的開頭空格或結尾空格。

字串的大小寫轉換方法:toLowerCase(),toUpperCase();

5.6 JS中基本封裝類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.