淺談javascript中基本封裝類型_javascript技巧

來源:互聯網
上載者:User

為了便於操作基本類型值,ECMAScript還提供了3個特殊的參考型別:Boolean、Number和String。這些類型與本章介紹的其他參考型別相似,但同時也具有與各自的基本類型相應的特殊行為。實際上,每當讀取一個基本類型值得時候,後台就會建立一個對應的基本封裝類型的對象,從而讓我們能夠調用一些方法來操作這些資料。如下例子:

複製代碼 代碼如下:

var s1="some text";
var s2=s1.substring(2);

  這個例子中的變數s1包含一個字串,字串當然是基本類型值,而下一行代碼調用了s1的substring()方法,並將返回的結果儲存在了s2中。我們知道,基本類型值不是對象,因而從邏輯上講它們不應該有方法(儘管如我們所願,它們確實有方法)。其實,為了讓我們實現這種直觀的操作,後台已經自動完成了一系列的處理。當第二行代碼訪問s1時,訪問過程處於一種讀模數式,也就是呀從記憶體中讀取這個字串的值。而在讀模數式中訪問字串時,後台都會自動完成下列處理。
1.建立String類型的一個執行個體;
2.在執行個體上調用指定的方法;
3.銷毀這個執行個體。

  可以將以上三個步驟想象成是執行了下列ECMAScript代碼。

複製代碼 代碼如下:

var s1=new String("some text");
var s2=s1.substring(2);
s1=null;

  經過此番處理,基本的字串值就變得跟對象一樣了,而且,上面這三個步驟也分別適用於Boolean和Number類型對應的布爾值和數字值。

  參考型別與基本封裝類型的主要區別就是對象的生存期。使用new操作符建立的參考型別的執行個體,在執行流離開當前範圍之前都一直儲存在記憶體中。而自動建立的基本封裝類型的對象,則只存在於一行代碼的執行瞬間,然後立即被銷毀。這意味著我們不能再運行時為基本類型值添加屬性和方法。如下面例子:

複製代碼 代碼如下:

var s1="some text"
s1.color="red";
alert(s1.color);//undefined

  在此,第二行代碼試圖為字串s1添加一個color屬性。但是,當第三行代碼在此訪問s1時,其color屬性不見了。問題的原因就是第二行建立的String對象在執行第三行代碼時已經被銷毀了。第三行代碼又建立自己的String對象,而該對象沒有color屬性。

  當然,可以顯示的滴調用Boolean、Number和String來建立基本封裝類型的對象。不過,應該在絕對必要的情況下再這樣做,因為這種做法很容易讓人分不清自己是在處理基本封裝類型還是引用基本封裝類型的值。對基本封裝類型的執行個體調用typeof會返回“object”,而且所有基本封裝類型的對象都會被轉換為布爾值true。

  Object建構函式也會像Factory 方法一樣,根據傳入值得類型返回相應基本封裝類型的執行個體。例如:

複製代碼 代碼如下:

var obj=new Object("some text");
alert(obj instanceof String);//true

  把字串傳給Object建構函式,就會建立String的執行個體;而傳入數值參數會得到Number的執行個體,傳入布爾值參數就會得到Boolean的執行個體。

  要注意的是,使用new調用基本封裝類型的建構函式,與直接調用同名的轉型函數是不一樣的。例如:

複製代碼 代碼如下:

var value="25";
var number=Number(value); //轉型函數
alert(typeof number); //"number"
var obj=new Number(value); //建構函式
alert(typeof obj); //"object"

  在這個例子中,變數number中儲存的是基本類型的值25,而變數obj中儲存的是Number的執行個體。

  儘管我們不建議顯式的建立基本封裝類型的對象,但它們操作基本類型值的能力還是相當重要的。而每個基本封裝類型都提供了操作相應值的便捷方法。

意思所述就是本文的全部內容了,希望大家能夠喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.