摘要:三包裝對象的概念在中,一切皆對象,包括三種原始類型的值數(shù)值字符串布爾值,在一定條件下,也會自動轉(zhuǎn)為對象,也就是原始類型的包裝對象。每當讀取數(shù)字字符串和布爾值的屬性或方法時,創(chuàng)建的臨時對象稱做包裝對象。
一、ECMAScript數(shù)據(jù)類型
(1)最新的 ECMAScript 標準定義了 7 種 數(shù)據(jù)類型:
6種 原型類型:
Boolean. 布爾值,true 和 false.
null. 一個表明 null 值的特殊關鍵字。 JavaScript 是大小寫敏感的,因此 null 與 Null、NULL或其他變量完全不同。
undefined. 變量未定義時的屬性。
Number. 表示數(shù)字,例如: 42 或者 3.14159。
String. 表示字符串,例如:"Howdy"
Symbol ( 在 ECMAScript 6 中新添加的類型).。一種數(shù)據(jù)類型,它的實例是唯一且不可改變的。
以及 Object 對象
(2)這7種數(shù)據(jù)類型中,對象為“引用類型”,其他六種為“原始類型”(或叫“基本類型”)。
二、原始類型沒有屬性和方法(1)按原始類型和引用類型的定義來說,只有引用類型(對象)才有屬性和方法,原始類型是沒有屬性和方法的。
(2)但是我們也能經(jīng)??吹接邢旅孢@樣的寫法。
(3)我們使用 toString() 方法,將 num 這個數(shù)值類型轉(zhuǎn)換成了字符串類型,如此我們用 原始類型 num 調(diào)用了 toString() 方法,那么是不是原始類型也能調(diào)用方法呢?答案是否定的。仍然只有對象才能擁有屬性和方法。
(4)【疑問】為什么 num 調(diào)用了 toString() 卻沒有報錯呢?這就需要我們了解包裝對象的概念了。
三、包裝對象的概念(1)在JavaScript中,“一切皆對象”,包括三種原始類型的值(數(shù)值、字符串、布爾值),在一定條件下,也會自動轉(zhuǎn)為對象,也就是原始類型的“包裝對象”。
(2)包裝對象是特殊的引用類型。每當讀取數(shù)字、字符串和布爾值的屬性或方法時,創(chuàng)建的 臨時對象 稱做包裝對象。
四、包裝對象 4.1 構(gòu)造函數(shù)(1)為了便于引用字符串的屬性和方法,JavaScript將字符串值通過調(diào)用 new String() 的方式 轉(zhuǎn)換成對象,這個對象繼承了字符串的屬性和方法,并被用來處理屬性和方法的引用。數(shù)值和布爾值也是如此。
(2)雖然包裝對象看上去和原來的值一模一樣,顯示出來的也是一模一樣,但他們的 類型 已經(jīng)變?yōu)?object !
(3)【注意】包裝對象和原始值用 === 比較會返回 false。
4.2 數(shù)據(jù)類型轉(zhuǎn)換(1)Number、String 和 Boolean,如果不作為構(gòu)造函數(shù)調(diào)用(即調(diào)用時不加 new);此時,Number()、Boolean() 和 String() 被當做普通函數(shù),把任何類型的數(shù)據(jù)轉(zhuǎn)換為 number、boolean和string類型(注意不是其包裝類型)。
4.3 總結(jié)(1)這三個包裝對象作為 構(gòu)造函數(shù) 使用(帶有 new)時,可以將 原始類型的值轉(zhuǎn)為對象;
(2)作為 普通函數(shù) 使用時(不帶有 new),可以將任意類型的值,轉(zhuǎn)為原始類型的值。
五、包裝對象的銷毀(1)【注意】一旦包裝對象的屬性或方法的引用結(jié)束,這個新創(chuàng)建的對象就會銷毀。
(2)【說明】在上面的例子中,代碼第二行 name 屬性賦值時,包裝對象就會登場,創(chuàng)建一個 str 對應的臨時對象,當然,這行代碼執(zhí)行完成,這個對象也就被銷毀。然后在第三行則會創(chuàng)建一個新的包裝對象,這個對象當然沒有 name 屬性,所以輸出的是 undefined。
六、包裝對象的目的 6.1 涵蓋所有值(1)包裝對象的最大目的,首先是使得 JavaScript 的對象涵蓋所有的值。
6.2 方便調(diào)用方法(1)其次使得原始類型的值可以方便地調(diào)用某些方法。
閱讀更多
參考文章
包裝對象 -- JavaScript 標準參考教程(alpha)
javascript類型系統(tǒng)——包裝對象 小火柴的藍色理想
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107837.html
摘要:目錄導語包裝對象的理解三大包裝對象的知識點小結(jié)導語包裝對象是為了彌補基本數(shù)據(jù)類型的非對象特性而產(chǎn)生的,對于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創(chuàng)建字符串時,調(diào)用例如的方法,那么其內(nèi)在原理究竟是什么呢閱讀完本篇文 目錄 導語 1. 包裝對象的理解 2. 三大包裝對象的知識點 3. 小結(jié) 導語 包裝對象是為了彌補基本數(shù)據(jù)類型的非對象特性而產(chǎn)生的,對于基本類型...
摘要:你不知道的基本包裝類型聲明本文的大部分內(nèi)容參考自高級程序設計第三版中文版,中間夾雜一些自己閱讀這部分內(nèi)容時的思路。而且,上面的步驟同樣適用于類型的類型對應的布爾值和數(shù)字值。 JavaScript 你不知道的基本包裝類型 聲明:本文的大部分內(nèi)容參考自《JavaScript 高級程序設計(第三版)》(中文版 P.118),中間夾雜一些自己閱讀這部分內(nèi)容時的思路。 JavaScript 中共...
摘要:中的對象類型分為內(nèi)置類型和對象類型,其中內(nèi)置類型包括五種對象類型包括等等,統(tǒng)稱為類型。如下面代碼為字符串添加一個屬性并賦值為上面的代碼我們可以分解為創(chuàng)建包裝對象為字符串添加一個屬性并賦值為釋放包裝對象自此我們不難理解為什么的值為 javascript中的對象類型分為內(nèi)置類型和對象類型,其中內(nèi)置類型包括sting number boolean null undefined五種;對象類型包...
摘要:知道了這些知識看看上面的題目為什么結(jié)果是包裝對象存取字符串,數(shù)字,布爾值的屬性時創(chuàng)建用構(gòu)造函數(shù)來創(chuàng)建的臨時對象稱作包裝對象。 來自網(wǎng)絡 var s=test;//創(chuàng)建字符串類型變量 s.len=4;//創(chuàng)建包裝對象,為包裝對象添加屬性len //引用完畢,銷毀包裝對象 console.log(s.len);//創(chuàng)建包裝對象,查找其len屬性,沒有找到,返回undefined ...
摘要:被識別為結(jié)束符。變量時被認為時有名字的容器。常量一旦被聲明初始化,值并不能被改變。字符串可以看成右字符組成的數(shù)組,可能被誤認為可變的。表達式?jīng)]有顯示的返回任何內(nèi)容。 Java script 簡介 Javascript 是一門跨平臺,面向?qū)ο蟮妮p量級腳本語言,運行于Javascript解釋權(quán)/引擎 avascript內(nèi)置了一個包含一系列對象的標準庫,比如數(shù)組,日期,數(shù)字和一個語言元素合...
閱讀 2494·2021-10-19 11:45
閱讀 2485·2021-09-30 09:56
閱讀 1441·2021-09-30 09:47
閱讀 599·2019-08-30 15:53
閱讀 1840·2019-08-30 15:44
閱讀 589·2019-08-30 12:52
閱讀 1091·2019-08-30 11:16
閱讀 1616·2019-08-29 16:36