亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

說說 JavaScript 基本包裝類型

2019-11-06 06:08:33
字體:
來源:轉載
供稿:網友
為了便于操作基本類型的值,ECMAScript 提供了 3 個特殊的引用類型:Boolean、Number 和 String。每當讀取一個基本類型值的時候,后臺會創建一個對應的基本包裝類型的對象。引用類型和基本包裝類型的區別是對象的生存期。使用 new 創建的引用類型的實例,在執行流離開當前作用域之前一直都保存在內存中;而自動創建的基本包裝類型的對象,只存在于一行代碼的執行瞬間,然后立即被銷毀。對基本包裝類型的實例調用 typeof 都會返回 “object”,所以只有在絕對必要的情況下才顯式調用。Object 構造函數會根據傳入值的類型返回相應的基本包裝類型的實例:var obj = new Object("some text");console.log(obj instanceof String);//true使用 new 調用基本包裝類型的構造函數與直接調用同名的轉型函數返回的類型的不一樣的:var value = "25";var number = Number(value);//轉型函數console.log(typeof number);//numbervar obj = new Number(value);//構造函數console.log(typeof obj);//object

1 Boolean 類型

用處不大,特別是在布爾表達式中使用 Boolean 對象會造成誤解,因為布爾表達式中的所有對象都會被轉換為 true:<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>Boolean 對象的誤用(布爾表達式中所有的對象都會被轉換為 true)</title></head><body><script type="text/javascript"> var falSEObject = new Object(false); var result = falseObject && true; console.log(result);//true var falseValue = false; result = falseValue && true; console.log(result);//false</script></body></html>因此,建議永遠不要使用 Boolean 對象。

2 Number 對象

2.1 創建 Number 對象

var numberObject = new Number(10);

2.2 toString()

為 toString() 方法傳遞一個表示基數的參數,它會返回多少進制的數值的字符串形式:var num = 10; console.log(num.toString());//10 console.log(num.toString(2));//1010 console.log(num.toString(8));//12 console.log(num.toString(10));//10 console.log(num.toString(16));//a

2.3 toFixed()

toFixed() 方法會按照指定的小數位返回數值的字符串表示: var num = 10; console.log(num.toFixed(2));//10.00如果數值本身包含的小數位比指定的還要多,那么接近指定的最大小數位的值就會舍入: var num = 10.005; console.log(num.toFixed(2));//10.01toFixed() 方法很適合處理貨幣值,但依實現而異。

注意: 規范中規定 toFixed() 方法可以表示帶有 0 ~ 20 個小數位的數值,但有的瀏覽器支持更多位數。


2.4 toExponential()

返回以指數表示法表示的數值的字符串形式,可以指定輸出結果中的小數位數:var num = 10;console.log(num.toExponential(1));//1.0e+1

2.5 toPRecision()

可能會返回固定大小的格式,會可能返回指數格式,它會自動判斷哪種格式合適。它接收一個參數,即表示數值的所有數字的位數(不包括指數部分):var num = 99;console.log(num.toPrecision(1));//1e+2console.log(num.toPrecision(2));//99console.log(num.toPrecision(3));//99.0

注意: 規范中規定 toPrecision() 方法可以表示帶有 1 ~ 21 個小數位的數值,但有的瀏覽器支持更多位數。


2.6 建議

不建議直接直接實例化 Number 類型,因為在使用 typeof 和 instanceof 操作符測試基本類型數值與引用類型數值時,結果完全不同:var numberObject = new Number(10);var numberValue = 10;console.log(typeof numberObject);//objectconsole.log(typeof numberValue);//numberconsole.log(numberObject instanceof Number);//trueconsole.log(numberValue instanceof Number);//false

3 String 類型

使用 String 構造函數創建: var StringObject = new String("hello world");length 屬性表示字符串中包含了多少字符。注意,即使字符串中吧包含雙字節字符,也算是一個字符:var stringValue = "hello world";console.log(stringValue.length);//11

3.1 字符方法

charAt() 接受基于 0 的字符位置,返回給定位置的那個字符:console.log(stringValue.charAt(1));//echarCodeAt() 接受基于 0 的字符位置,返回給定位置的那個字符編碼:console.log(stringValue.charCodeAt(1));//101ECMAScript 5 中可以使用方括號加數字索引的方式訪問字符串中的特定字符: console.log(stringValue[1]);//e

3.2 字符串方法

concat() 可將一個或多個字符串拼接起來,返回拼接后的新字符串:var stringValue = "hello ";var result = stringValue.concat("world");console.log(result);//hello worldconsole.log(stringValue);//helloconcat() 可以接受任意多個參數,因此可以拼接任意多個字符串:var stringValue = "hello ";var result = stringValue.concat("world", "!");console.log(result);//hello world!console.log(stringValue);//hello其他創建新字符串的方法

這些方法對原始字符串沒有影響,如果沒有給這些方法傳遞第二個參數,就會將字符串的長度作為結束位置。

方法名 接受參數 說明
slice() 字符串開始位置、子字符串最后一個字符后面的位置(可選) 如果參數是負數,會將負值與字符串的長度相加
substring() 字符串開始位置、子字符串最后一個字符后面的位置(可選) 將所有的負值轉換為 0
substr() 字符串開始位置、需要返回的字符個數(可選) 負的第一個參數加上字符串長度,負的第二個參數轉換為 0
//正值var stringValue = "hello world";console.log(stringValue.slice(3));//lo worldconsole.log(stringValue.substring(3));//lo worldconsole.log(stringValue.substr(3));//lo worldconsole.log(stringValue.slice(3, 7));//lo wconsole.log(stringValue.substring(3, 7));//lo wconsole.log(stringValue.substr(3, 7));//lo worl//負值console.log(stringValue.slice(-3));//rldconsole.log(stringValue.substring(-3));//hello worldconsole.log(stringValue.substr(-3));//rldconsole.log(stringValue.slice(3, -4));//lo wconsole.log(stringValue.substring(3,-4));//helconsole.log(stringValue.substr(3,-4));//空字符串

3.3 字符串位置方法

indexOf() 和 lastIndexOf() 從一個字符串中搜索給定的子字符串,然后返回子字符串的位置(如果沒有找到,則返回 -1)她們的區別在于 indexOf() 是從前向后搜索;而 lastIndexOf() 是從后往前搜索:可以通過循環調用 indexOf() 或 lastIndexOf() 來找到所有匹配的子字符串:<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>可以通過循環調用 indexOf 或 lastIndexOf 來查找所有匹配的字符串</title></head><body><script type="text/Javascript"> var stringValue = "last night, I'm looking a good movie: La La Land"; var positions = new Array(); var pos = stringValue.indexOf("a"); while (pos > -1) { positions.push(pos); pos = stringValue.indexOf("a", pos + 1); } console.log(positions);//1,24,39,42,45</script></body></html>

3.4 trim() 方法

ECMAScript 5 定義她會創建一個字符串的副本,然后刪除前綴以及后綴的所有空格,最后返回:

3.5 字符串大小寫轉換方法

toLowerCase() 和 toUpperCase() ,是不是很經典啊 O(∩_∩)O~toLocaleLowerCase() 和 toLocalUpperCase() 是針對地區的特殊實現,如果不知道代碼將在哪種語言環境中運行,最后還是用這兩個方法。<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>字符串大小寫轉換方法</title></head><body><script type="text/javascript"> var stringValue = "hello world"; console.log(stringValue.toLocaleUpperCase());//HELLO WORLD console.log(stringValue.toUpperCase());//HELLO WORLD console.log(stringValue.toLocaleLowerCase());//hello world console.log(stringValue.toLowerCase());//hello world</script></body></html>

3.6 字符串的模式匹配方法

match() 接收一個參數,可以是正則表達式或者是 RegExp 對象,她會返回一個數組,數組的第一項是與整個模式匹配的字符串,之后的每一項(如果有)是與正則表達式中的捕獲組匹配的字符串:var text = "cat,bat,sat,fat";var pattern = /.at/;//與 pattern.exec(text) 相同var matches = text.match(pattern);console.log(matches.index);//0console.log(matches[0]);//catconsole.log(pattern.lastIndex);//0search() 接收的參數與 match() 相同,返回字符串中第一個匹配項的索引;如果沒有找到,則返回 -1;她會從前往后查找:var text = "cat,bat,sat,fat";var pos = text.search(/at/);console.log(pos);//1replace() 接收兩個參數,第一個參數是字符串或者是 RegExp 對象,第二個參數是一個字符串或者是一個函數。如果第一個參數是字符串,那么就只會替換第一個子字符串,要想替換所有子字符串,必須傳入指定全局標志的正則表達式:var result = text.replace("at", "ond");console.log(result);//cond,bat,sat,fatresult = text.replace(/at/g, "ond");console.log(result);//cond,bond,sond,fond如果第二個參數是字符串,還可以使用特殊的字符序列,將正則表達式操作得到的值插入到結果字符串中:
字符序列 替換文本
$$ $
$& 匹配整個模式的子字符串(與 RegExp.lastMatch 的值相同)
$’ 匹配的子字符串之前的子字符串(與 RegExp.leftContext 的值相同)
$` 匹配的子字符串之后的子字符串(與 RegExp.rightContext 的值相同)
$n 匹配第 n 個捕獲組的子字符串。n 為 0 ~ 9。如果正則表達式沒有定義捕獲組,則使用空字符串
$nn 匹配第 nn 個捕獲組的子字符串。n 為 01 ~ 99。如果正則表達式沒有定義捕獲組,則使用空字符串

* 使用特殊的字符序列,可以使用最近一次匹配結果中的內容:

var text = "cat,bat,sat,fat";result = text.replace(/(.at)/g, "Word ($1)");console.log(result);//word (cat),word (bat),word (sat),word (fat)replace() 的第二個參數也可以是函數。在只有一個匹配項的情況下,會向這個函數傳遞 3 個參數:模式的匹配項、模式匹配項在字符串中的位置以及原始字符串。在正則表達式中定義了多個捕獲組的情況下,傳遞給函數的參數依次是模式的匹配項、第一個捕獲組的匹配項、第二個捕獲組的匹配項……,最后兩個參數是模式匹配項在字符串中的位置以及原始字符串。因此這個函數可以實現更加精細的替換操作:function htmlEscape(text) { return text.replace(/[<>"&]/g, function (match, pos, originalText) { switch (match) { case "<": return "&lt;"; case ">": return "&gt;"; case "&": return "&amp;"; case "/"": return "&quot;"; } }); } console.log(htmlEscape("<p class=/"greeting/">Hello world!</p>"));//&lt;p class=&quot;greeting&quot;&gt;Hello world!&lt;/p&gt;split() 基于指定的分隔符將一個字符串分割成多個子字符串,并將結果放入數組中。分隔符可以是字符串或者 RegExp 對象。她還接受第二個參數,用于指定數組的大小:var colorText = "red,blue,green,yellow";console.log(colorText.split(","));console.log(colorText.split(",", 2));console.log(colorText.split(/[^/,]+/));對 split() 中正則表達式的支持因瀏覽器而異,因此在使用時,一定要在各種瀏覽器下做一做測試。

3.7 localeCompare() 方法

比較兩個字符串,并返回: * 如果字符串在字母表中排在字符串參數之前,則返回負數。 * 如果字符串等于字符串參數,則返回 0。 * 如果字符串在字母表中排在字符串參數之后,則返回正數。

var stringValue = "yellow";console.log(stringValue.localeCompare("brick"));//1console.log(stringValue.localeCompare("yellow"));//0console.log(stringValue.localeCompare("zoo"));//-1因為 localeCompare() 返回的數值取決于實現,因此最好這樣使用: function determineOrder(value) { var result = stringValue.localeCompare(value); if (result < 0) { console.log("The string 'yellow' comes before the string '" + value + "'."); } else if (result > 0) { console.log("The string 'yellow' comes after the string '" + value + "'."); } else { console.log("The string 'yellow' is equal to the string '" + value + "'."); } } determineOrder("brick"); determineOrder("yellow"); determineOrder("zoo");

localeCompare() 所支持的地區決定了這個方法的行為。在美國地區,localeCompare() 是區分大小寫的,因此大寫字母排在小寫字母前是一個決定性的比較規則。其他地區就不一定了,要測試過了才知道哦 O(∩_∩)O~

3.8 fromCharCode() 方法

接收一或者多個字符編碼,然后轉換為字符串。她是與 charCodeAt() 相反的操作:

console.log(String.fromCharCode(104, 101, 108, 108, 111));//hello

3.9 HTML 方法

有些瀏覽器擴展了標準,實現了一些專門用于簡化 HTML 格式化任務的方法。最好不要使用,因為它們創建的標記通常無法表達語義,而且不通用,所以這里就不詳細列出了哦 O(∩_∩)O~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成网站色ww在线| 在线视频亚洲欧美| 91免费精品国偷自产在线| 亚洲一区二区在线播放| 久久久久成人精品| 日韩电影大片中文字幕| 欧洲美女7788成人免费视频| 午夜精品国产精品大乳美女| 91av在线免费观看| 亚洲国产精品国自产拍av秋霞| 久久成人精品电影| 久久久久久免费精品| 中文字幕自拍vr一区二区三区| 久久影院模特热| 91香蕉嫩草影院入口| 精品久久久久久亚洲国产300| 午夜精品三级视频福利| 欧美一区在线直播| wwwwwwww亚洲| 91美女片黄在线观看游戏| 日韩美女激情视频| 亚洲韩国日本中文字幕| 国模极品一区二区三区| 日韩一区在线视频| 欧美性生活大片免费观看网址| 91久久在线视频| 国产精品电影一区| 最新中文字幕亚洲| 国产精品91免费在线| 91影院在线免费观看视频| 九九热精品在线| 国内精品一区二区三区| 欧美整片在线观看| 久久夜精品va视频免费观看| 国外成人在线视频| 国产精品视频自拍| 欧美激情亚洲精品| 亚洲色图第一页| 91视频88av| 韩国欧美亚洲国产| 欧美黑人国产人伦爽爽爽| 91在线色戒在线| 中文字幕精品久久久久| 欧美性极品xxxx做受| 亚洲精品中文字幕av| 日韩av在线影视| 国产精品视频导航| 欧美午夜片欧美片在线观看| 国产亚洲精品久久久| 亚洲视频一区二区三区| 色噜噜久久综合伊人一本| 成人欧美一区二区三区黑人| 国产精品一区二区女厕厕| 欧美成人激情视频| 亚洲欧美激情四射在线日| 亚洲另类xxxx| 久久亚洲精品网站| 国产成人精品免费久久久久| 国产视频精品va久久久久久| 亚洲影视九九影院在线观看| 尤物九九久久国产精品的特点| 最新国产精品亚洲| 色偷偷亚洲男人天堂| 欧美日韩性视频在线| 国产精品日韩精品| 亚洲第一av网站| 久久久久久av| 7777kkkk成人观看| 91嫩草在线视频| 成人免费网站在线看| 怡红院精品视频| 国产亚洲一级高清| 欧美第一淫aaasss性| 91精品国产高清自在线看超| 日韩美女视频中文字幕| 国产精品mp4| 久久理论片午夜琪琪电影网| 国产精品夜间视频香蕉| 久久av资源网站| 最近中文字幕日韩精品| 欧美激情视频一区二区| 日韩欧美精品在线观看| 视频直播国产精品| 伊人久久大香线蕉av一区二区| 91网站在线免费观看| 最近2019中文字幕第三页视频| 中文字幕精品国产| 亚洲高清一区二| 国产精品video| 欧美电影第一页| 国内精品久久久久久影视8| 国内精品中文字幕| 色偷偷88888欧美精品久久久| 日韩成人激情视频| 97热在线精品视频在线观看| 国产精品情侣自拍| 欧美国产日韩一区二区三区| 久久精品一本久久99精品| 亚洲一区二区三区成人在线视频精品| 亚洲欧美精品伊人久久| 精品视频在线播放| 一区二区在线视频| 亚洲国产91精品在线观看| 欧美福利视频在线| 亚洲国产精品女人久久久| 国产一区二区三区在线播放免费观看| 在线观看欧美日韩| 欧美另类极品videosbest最新版本| 国产一区玩具在线观看| 欧美黑人巨大xxx极品| 在线不卡国产精品| 91九色综合久久| 国产精品一区二区三区久久久| 欧美激情免费观看| 免费不卡欧美自拍视频| 伊人伊人伊人久久| 欧美日韩在线视频首页| 98精品国产自产在线观看| 久久综合久久美利坚合众国| 国产成人精品亚洲精品| 国产999精品久久久影片官网| 久久噜噜噜精品国产亚洲综合| 国产ts人妖一区二区三区| 亚洲视频在线视频| 国产美女精品视频免费观看| 亚洲男人天天操| 久久成人精品一区二区三区| 亚洲第一色在线| 中文字幕免费精品一区| 日韩在线观看高清| 日韩中文字幕网站| 麻豆一区二区在线观看| 国产精品大片wwwwww| 国产91ⅴ在线精品免费观看| 91av在线播放| 亚洲乱亚洲乱妇无码| 欧美激情区在线播放| 欧美丰满片xxx777| 欧美在线视频观看免费网站| 欧美性猛交99久久久久99按摩| 久久人人97超碰精品888| 国产精品久久久久久久久免费看| 成人免费视频a| 国产精品亚洲网站| 国产精品久久视频| 日韩欧美综合在线视频| 色偷偷888欧美精品久久久| 国产精品久久久久一区二区| 日本免费一区二区三区视频观看| 精品性高朝久久久久久久| 国产69精品久久久久9| 97热精品视频官网| 欧美亚洲国产日韩2020| 精品国产欧美一区二区三区成人| 日本久久久久久久久久久| 日韩精品中文字| 热99在线视频| 中文字幕欧美精品在线| 久久久久国产精品免费| 国产一区深夜福利| 久久久免费高清电视剧观看| 不卡av在线网站| 欧美日本啪啪无遮挡网站| 久久久91精品国产一区不卡|