JavaScript-包裝對象

1、ECMAScript數據類型

(1)最新的 ECMAScript 標準定義了 7 種 數據類型:javascript

6種 原型類型:html

  1. Boolean. 布爾值,true 和 false.
  2. null. 一個代表 null 值的特殊關鍵字。 JavaScript 是大小寫敏感的,所以 null 與 Null、NULL或其餘變量徹底不一樣。
  3. undefined. 變量未定義時的屬性。
  4. Number. 表示數字,例如: 42 或者 3.14159。
  5. String. 表示字符串,例如:"Howdy"
  6. Symbol ( 在 ECMAScript 6 中新添加的類型).。一種數據類型,它的實例是惟一且不可改變的。

以及 Object 對象java

(2)這7種數據類型中,對象爲「引用類型」,其餘六種爲「原始類型」(或叫「基本類型」)。web

2、原始類型沒有屬性和方法

(1)按原始類型和引用類型的定義來講,只有引用類型(對象)纔有屬性和方法,原始類型是沒有屬性和方法的。segmentfault

(2)可是咱們也能常常看到有下面這樣的寫法。app

原始類型

(3)咱們使用 toString() 方法,將 num 這個數值類型轉換成了字符串類型,如此咱們用 原始類型 num 調用了 toString() 方法,那麼是否是原始類型也能調用方法呢?答案是否認的。仍然只有對象才能擁有屬性和方法。函數

(4)【疑問】爲何 num 調用了 toString() 卻沒有報錯呢?這就須要咱們瞭解包裝對象的概念了。spa

3、包裝對象的概念

(1)在JavaScript中,「一切皆對象」,包括三種原始類型的值(數值字符串布爾值),在必定條件下,也會自動轉爲對象,也就是原始類型的「包裝對象」。htm

(2)包裝對象是特殊的引用類型。每當讀取數字、字符串和布爾值的屬性或方法時,建立的 臨時對象 稱作包裝對象。對象

4、包裝對象

4.1 構造函數

(1)爲了便於引用字符串的屬性和方法,JavaScript將字符串值經過調用 new String() 的方式 轉換成對象,這個對象繼承了字符串的屬性和方法,並被用來處理屬性和方法的引用。數值和布爾值也是如此。

構造函數

(2)雖然包裝對象看上去和原來的值如出一轍,顯示出來的也是如出一轍,但他們的 類型 已經變爲 object

(3)【注意】包裝對象和原始值用 === 比較會返回 false

false

4.2 數據類型轉換

(1)Number、String 和 Boolean,若是不做爲構造函數調用(即調用時不加 new);此時,Number()Boolean()String() 被當作普通函數,把任何類型的數據轉換爲 number、boolean和string類型(注意不是其包裝類型)。

數據類型轉換

4.3 總結

(1)這三個包裝對象做爲 構造函數 使用(帶有 new)時,能夠將 原始類型的值轉爲對象

(2)做爲 普通函數 使用時(不帶有 new),能夠將任意類型的值,轉爲原始類型的值

5、包裝對象的銷燬

(1)【注意】一旦包裝對象的屬性或方法的引用結束,這個新建立的對象就會銷燬

銷燬

(2)【說明】在上面的例子中,代碼第二行 name 屬性賦值時,包裝對象就會登場,建立一個 str 對應的臨時對象,固然,這行代碼執行完成,這個對象也就被銷燬。而後在第三行則會建立一個新的包裝對象,這個對象固然沒有 name 屬性,因此輸出的是 undefined。

6、包裝對象的目的

6.1 涵蓋全部值

(1)包裝對象的最大目的,首先是使得 JavaScript 的對象涵蓋全部的值

6.2 方便調用方法

(1)其次使得原始類型的值能夠方便地調用某些方法。

閱讀更多

參考文章

包裝對象 -- JavaScript 標準參考教程(alpha)
javascript類型系統——包裝對象 小火柴的藍色理想

相關文章
相關標籤/搜索