国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

淺談javascript中基本包裝類型

2024-05-06 16:21:12
字體:
來源:轉載
供稿:網友
在JavaScript中,和JAVA類似,也提供了對于基本數據類型的包裝類型。例如Number、Boolean、String類型。下面我們就來詳細探討下吧。
 

為了便于操作基本類型值,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構造函數也會像工廠方法一樣,根據傳入值得類型返回相應基本包裝類型的實例。例如:

 

復制代碼代碼如下:

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的實例。

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 彭州市| 公安县| 龙泉市| 遵义市| 岑巩县| 彭阳县| 铜山县| 阿拉善右旗| 枣阳市| 奉化市| 苍山县| 蒙山县| 康马县| 石河子市| 壤塘县| 郴州市| 会昌县| 吉水县| 九龙县| 浦北县| 临沧市| 通海县| 镇原县| 临江市| 都江堰市| 洮南市| 内江市| 蓬溪县| 称多县| 桃园县| 中西区| 长兴县| 五华县| 武鸣县| 卢氏县| 施秉县| 临城县| 云阳县| 长宁区| 陆川县| 宾川县|