JavaScript-包裝對象

一、ECMAScript數據範例

(1)最新的 ECMAScript 規範定義了 7 種 數據範例:

6種 原型範例:

  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 對象

(2)這7種數據範例中,對象為“援用範例”,其他六種為“原始範例”(或叫“基礎範例”)。

二、原始範例沒有屬性和要領

(1)按原始範例和援用範例的定義來講,只要援用範例(對象)才有屬性和要領,原始範例是沒有屬性和要領的。

(2)然則我們也能常常看到有下面如許的寫法。

《JavaScript-包裝對象》

(3)我們運用 toString() 要領,將 num 這個數值範例轉換成了字符串範例,云云我們用 原始範例 num 挪用了 toString() 要領,那末是否是原始範例也能挪用要領呢?答案是否認的。依然只要對象才具有屬性和要領。

(4)【疑問】為何 num 挪用了 toString() 卻沒有報錯呢?這就須要我們相識包裝對象的觀點了。

三、包裝對象的觀點

(1)在JavaScript中,“統統皆對象”,包含三種原始範例的值(數值字符串布爾值),在肯定條件下,也會自動轉為對象,也就是原始範例的“包裝對象”。

(2)包裝對象是特別的援用範例。每當讀取数字、字符串和布爾值的屬性或要領時,建立的 暫時對象 稱做包裝對象。

四、包裝對象

4.1 組織函數

(1)為了便於援用字符串的屬性和要領,JavaScript將字符串值經由過程挪用 new String() 的體式格局 轉換成對象,這個對象繼續了字符串的屬性和要領,並被用來處置懲罰屬性和要領的援用。數值和布爾值也是云云。

《JavaScript-包裝對象》

(2)雖然包裝對象看上去和本來的值如出一轍,显示出來的也是如出一轍,但他們的 範例 已變成 object

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

《JavaScript-包裝對象》

4.2 數據範例轉換

(1)Number、String 和 Boolean,假如不作為組織函數挪用(即挪用時不加 new);此時,Number()Boolean()String() 被當作一般函數,把任何範例的數據轉換為 number、boolean和string範例(注重不是其包裝範例)。

《JavaScript-包裝對象》

4.3 總結

(1)這三個包裝對象作為 組織函數 運用(帶有 new)時,能夠將 原始範例的值轉為對象

(2)作為 一般函數 運用時(不帶有 new),能夠將恣意範例的值,轉為原始範例的值

五、包裝對象的燒毀

(1)【注重】一旦包裝對象的屬性或要領的援用完畢,這個新建立的對象就會燒毀

《JavaScript-包裝對象》

(2)【申明】在上面的例子中,代碼第二行 name 屬性賦值時,包裝對象就會上台,建立一個 str 對應的暫時對象,固然,這行代碼實行完成,這個對象也就被燒毀。然後在第三行則會建立一個新的包裝對象,這個對象固然沒有 name 屬性,所以輸出的是 undefined。

六、包裝對象的目標

6.1 涵蓋一切值

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

6.2 輕易挪用要領

(1)其次使得原始範例的值能夠輕易地挪用某些要領。

瀏覽更多

參考文章

包裝對象 — JavaScript 規範參考教程(alpha)
javascript範例體系——包裝對象 小火柴的藍色抱負

    原文作者:WEBING
    原文地址: https://segmentfault.com/a/1190000015107989
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞