中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript原始包裝類型實例分析

發布時間:2022-05-26 09:41:09 來源:億速云 閱讀:323 作者:zzz 欄目:開發技術

這篇文章主要講解了“JavaScript原始包裝類型實例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaScript原始包裝類型實例分析”吧!

引出問題: 如下一段簡單的代碼,變量a賦予了字符串類型原始值"str",通過控制臺打印輸出變量a,只有“str"。a并沒有定義slice這個方法,但是后續為什么變量a可以調用slice方法呢?

let a = "str";
console.log(a);  // "str"
console.log(a.slice(1))  // "tr"

針對以上問題,需要追溯到JavaScript中的原始包裝類型。

一、原始包裝類型

為了方便操作原始值,ECMAScript提供了3種特殊的引用類型:Boolean、Number 和 String

關于Boolean、Number 和 String涉及的方法和屬性很多,這里僅介紹三種引用類型的 valueOf() 方法和 toString() 方法。

1、Boolean

創建一個Boolean類型的對象實例時,傳入的參數按轉換為Boolean類型值的規則確實是true還是false

(1)valueOf() :返回一個原始值 true 或者 false

let a = new Boolean(true);
console.log(a.valueOf());  // true

(2)toString() :返回字符串 ‘true' 或者 'false'

let b = new Boolean(false);
console.log(b.toString());  // "false"

2、Number

(1)valueOf() :返回對象的原始數值

let a = new Number(12);
console.log(a.valueOf());  // 12

(2)toString() :返回相應基數(進制數)的數值字符串

let b = new Number(123);
console.log(b.toString());  // "123"

3、String

valueOf() 、toString() 和 toLocalString() 都繼承自 Object,均返回對象的原始字符串值

let a = new String('str');
console.log(a.valueOf());  // str
console.log(a.toString());  // str
console.log(a.toLocaleString());  // str

二、原始包裝類型的特點

1、原始值為什么可以調用一些方法

let s = "str";
console.log(s.slice(1))  // "tr"

如上代碼,第二行中訪問a時,是以讀模式訪問的,也就是要從內存中讀取變量保存的值。

在以讀模式訪問字符串值得任何時候,后臺都會自動執行以下三步:

(1)根據字符串值創建一個 String 類型的實例
(2)調用實例上的特定方法
(3)銷毀實例

即相當于執行了以下三行代碼:

// 創建String實例
let s = new String("str");
// 調用特定方法
s.slice(1)
// 銷毀實例
s = null

這種行為則讓原始值擁有了對象的行為。

針對布爾值和數值,也會在后臺執行相同的步驟。

2、引用類型和原始值包裝類型的區別

引用類型和原始值包裝類型的區別主要在于對象的生命周期

  • (1)通過new實例化引用類型后,得到的實例會在離開作用域時被銷毀

  • (2)自動創建的原始值包裝對象則只會存在于訪問它的那行代碼執行期間。(所以運行時并不能給原始值添加屬性和方法)

3、原始包裝類型構造函數 和 轉型函數

以Number為例:

  • (1)如果直接調用 Number(),執行的是 Number()轉型函數,強制數值類型轉換

  • (2)如果通過new 調用 Number(),執行的是 Number() 構造函數,創建一個Number的實例

let a = Number(1);
console.log(typeof a);   // number
let b = new Number(1);
console.log(typeof b);   // object

感謝各位的閱讀,以上就是“JavaScript原始包裝類型實例分析”的內容了,經過本文的學習后,相信大家對JavaScript原始包裝類型實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑川县| 红桥区| 阿克陶县| 新巴尔虎右旗| 屯昌县| 天峻县| 潮安县| 桐梓县| 楚雄市| 睢宁县| 新源县| 安乡县| 丘北县| 阜新市| 德兴市| 吴忠市| 麦盖提县| 宁河县| 上高县| 峨眉山市| 博野县| 兴国县| 扬中市| 金乡县| 金溪县| 介休市| 广灵县| 镇坪县| 华蓥市| 苍山县| 巴林左旗| 格尔木市| 宜阳县| 彰武县| 梓潼县| 桦川县| 扎鲁特旗| 平果县| 科技| 沂源县| 自贡市|