国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript標準庫系列——三大包裝對象(四)

sean / 2025人閱讀

摘要:目錄導語包裝對象的理解三大包裝對象的知識點小結導語包裝對象是為了彌補基本數據類型的非對象特性而產生的,對于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創建字符串時,調用例如的方法,那么其內在原理究竟是什么呢閱讀完本篇文

目錄 導語 1. 包裝對象的理解 2. 三大包裝對象的知識點 3. 小結 導語

包裝對象是為了彌補基本數據類型的非對象特性而產生的,對于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創建字符串時,調用例如"hello".concat(" world")的方法,那么其內在原理究竟是什么呢?
閱讀完本篇文章,相信你能找到答案。

1. 包裝對象的理解

包裝對象指的是數據類型為NumberStringBoolean的值對應的原生對象;
三大包裝對象能力在于:

能夠將上述基本類型值包裝成真正的對象,從而體現JavaScript語言一切皆對象的特點;

是字面量使用對應包裝對象的方法的內在原理;

是進行數據類型轉換的利器;

1.1 三大包裝對象及其字面量

基本數據類型我們可以直接采用字面量的形式創建:

var num = 1,str = "hello",bool = true;

也可以采用對應包裝對象的形式創建:

var num = new Number(1),str = new String("hello"),bool = new Boolean(true)

二者區別在于前者是基本數據類型,后者是屬于對象的引用數據類型;

二者的聯系在于:

通過對象的valueOf()方法可以獲取其基本類型值;

字面量可直接調用包裝對象的實例的方法;

其原理在于每次基本類型字面量在調用包裝對象實例的方法時,首先創建對于包裝對象的實例,然后在實例上調用該方法,最后銷毀該實例,即

var str = "hello world";
str.split(" ")
等價于
var str = new String("hello world")
str.split(" ")
str = null;

所以,每當為字面量賦屬性值時是無效的,因為每次字面量調用完包裝對象實例的方法后都會銷毀實例;
關于更多包裝對象的實例屬性和方法詳見下文;

1.2 Object對象與三大包裝對象的關系

《JavaScript標準庫系列——Object對象和Array對象(一)》一文中,小羊曾提到Object是其他一切對象的構造函數,所以三大包裝對象的實例都可以由Object來構造;

var num = new Object(1);等價于 new Number(1)
var str = new Object("hello");new String("hello")
var bool = new Object(true);new Booleab(true)


Object構造函數根據傳入參數的數據類型返回相應的基本包裝類型的實例;

2. 三大包裝對象的知識點
2.1 包裝對象直接作為工具方法

包裝對象直接作為工具方法實現到不同類型數據之間的類型轉換作用,詳見《JavaScript數據類型(四)》一文;

2.2 包裝對象的實例方法

繼承自Object對象的valeOf()和toString()方法
這兩個方法繼承自Object對象,經常在使用字面量與其他類型數據進行運算時調用,例如:


這里順帶講一下+運算符的原理:

先自動轉成原始類型的值(即先執行該對象的valueOf
方法,如果結果還不是原始類型的值,再執行toString

方法;如果對象是Date實例,則先執行toString
方法);

兩個運算子都是原始類型的值以后,只要有一個運算子是字符串,則兩個運算子都轉為字符串,執行字符串連接運算;

否則,兩個運算子都轉為數值,執行加法運算;
來自阮一峰《JavaScript 標準參考教程》;

1+str1+obj1+bool為例:
1+str加法運算符兩側的運算子包含字符串,采用字符串拼接方法;
1+obj加法運算符兩側的運算子包含對象,先采用valueOf()方法,發現還是對象,在調用toString()方法得到"[object Object]",然后進行字符串拼接;
1+bool發現其中一個運算子是布爾值直接使用Number()進行包裝;

源自包裝對象實例的方法
三大包裝對象中String對象的實例方法相對來說比較重要,這里重點講一下,其他兩個可以參考阮一峰的教程;

字符方法

charAt():返回指定位置的字符;

charCodeAt():返回給定位置字符的Unicode碼


類數組方法

length:返回字符串的長度;

concat:合并字符串,返回新字符串,不改變原字符串;
slice:提取字符串,第一個參數是子字符串的開始位置,第二個參數是子字符串的結束位置(不含該位置),返回子字符串,不改變原字符串;
substr:提取字符串,第一個參數是子字符串的開始位置,第二個參數是子字符串的長度,返回子字符串,不改變原字符串;

格式化方法

toUpperCase:將字符串變大寫

toLowerCase:將字符串變小寫
trim:去除字符串前后的空格

檢索相關方法

match:傳入一個參數,若原字符串匹配參數則返回匹配的符串數組;

replace:可傳兩個參數,第一個為檢索表達式,第二個為替換值;
更多詳見《JavaScript標準庫系列——RegExp對象(三)》

var str = "hello world"
str.split(" ").map(function(ele){
  return ele.replace(/^w/,function(match){
    return match.toUpperCase()
  })
}).join(" ")
//"Hello World"

split()方法

split:按照給定的參數去分割字符串,和數組的join是互為逆方法;

小結

通過全文的瀏覽,我們了解到:

包裝對象是三大原始類型數據Number、String和Boolean對于的原生對象;

三大包裝對象在JavaScript中的作用主要是能將三大基本數據類型也包裝成對象,從而體現JavaScript一切皆對象的特性;是字面量調用對應實例方法的內在原理;是進行數據類型轉換的利器;

通過new+包裝對象方法能夠創建不同的包裝對象實例,調用其valueOf()方法就可以得到對應的原始類型值;同時也可以通過Object對象去構造對應的包裝對象;

包裝對象的使用既可以作為工具方法,起到數據類型轉換作用;又可以創建實例,從而實例可以調用部署在對應包裝對象原型上的方法;

valueOf()和toString()是三大包裝對象實例的共有方法,在進行數據類型轉換時會派上用場;

本文主要講解了關于String包裝對實例的方法,包括字符方法、類數組方法、格式化方法、檢索方法和split方法;

參考資料

《JavaScript高級程序設計(第3版)》

《JavaScript標準參考教程》——阮一峰

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86729.html

相關文章

  • JavaScript標準系列——Object對象和Array對象(一)

    摘要:目錄導語對象對象小結導語本系列文章將重點講解提供的原生庫標準庫,只要在支持語言的平臺,標準庫中的提供的對象的屬性和方法都能使用對象對象的理解講的標準庫,首先要從對象談起,因為之后的所有對象都可以看做是對象構造出來的因此,對象可以看做是一個構 目錄 導語 1. Object對象 2. Array對象 3. 小結 導語 本系列文章將重點講解JavaScript提供的原生庫——標準庫,只要...

    Scholer 評論0 收藏0
  • 標準(七)包裝對象math

    摘要:靜態屬性靜態方法,,三角函數方法靜態屬性對象的靜態屬性,提供以下一些數學常數。以為底的的對數。的指數方法返回常數的參數次方。四舍五入注意,它對負數的處理主要是對的處理。 Math是 JavaScript 的原生對象,提供各種數學功能。該對象不是構造函數,不能生成實例,所有的屬性和方法都必須在Math對象上調用。 靜態屬性靜態方法Math.abs()Math.max(),Math.min...

    ShevaKuilin 評論0 收藏0
  • 標準包裝對象二number

    摘要:對象概述作為構造函數,它主要用于生成布爾值的包裝對象實例。無輸出上面代碼的第一個例子之所以得到,是因為對應的包裝對象實例是一個對象,進行邏輯運算時,被自動轉化成布爾值因為所有對象對應的布爾值都是。 1.Boolean 對 象 1.1概述作為構造函數,它主要用于生成布爾值的包裝對象實例。 false對應的包裝對象實例,布爾運算結果也是true。 if (new Boolean(false...

    MAX_zuo 評論0 收藏0
  • 標準包裝對象二number

    摘要:對象概述作為構造函數,它主要用于生成布爾值的包裝對象實例。無輸出上面代碼的第一個例子之所以得到,是因為對應的包裝對象實例是一個對象,進行邏輯運算時,被自動轉化成布爾值因為所有對象對應的布爾值都是。 1.Boolean 對 象 1.1概述作為構造函數,它主要用于生成布爾值的包裝對象實例。 false對應的包裝對象實例,布爾運算結果也是true。 if (new Boolean(false...

    li21 評論0 收藏0
  • 標準包裝對象二number

    摘要:對象概述作為構造函數,它主要用于生成布爾值的包裝對象實例。無輸出上面代碼的第一個例子之所以得到,是因為對應的包裝對象實例是一個對象,進行邏輯運算時,被自動轉化成布爾值因為所有對象對應的布爾值都是。 1.Boolean 對 象 1.1概述作為構造函數,它主要用于生成布爾值的包裝對象實例。 false對應的包裝對象實例,布爾運算結果也是true。 if (new Boolean(false...

    ASCH 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<