摘要:而自動(dòng)創(chuàng)建的基本包裝類型的對(duì)象,則只存在于一行代碼的執(zhí)行瞬間,然后立即銷毀。對(duì)基本包裝類型的實(shí)例調(diào)用會(huì)返回,而且所有基本包裝類型的對(duì)象在轉(zhuǎn)換為布爾類型時(shí)值都是。使用調(diào)用基本包裝類型的構(gòu)造函數(shù),與直接調(diào)用同名的轉(zhuǎn)型函數(shù)是不一樣的。
基本包裝類型
3個(gè)特殊的引用類型:Boolean、Number、String
var box = "Mr. Lee"; //基本類型 alert(box.substring(2)); //打印 . Lee //對(duì)象.方法(參數(shù))這種寫法明顯是引用類型寫法 //索引0開始,從第二個(gè)位置開始開始截取到末尾 //是基本類型,但又是特殊的引用類型,叫做基本包裝類型 //因?yàn)樗梢哉{(diào)用系統(tǒng)內(nèi)置的方法
引用類型與基本包裝類型的主要區(qū)別就是對(duì)象的生存期。
為什么基本類型不能添加屬性?
原因:使用new操作符創(chuàng)建的引用類型實(shí)例,在執(zhí)行流離開當(dāng)前作用域之前都一直保存在內(nèi)存中。而自動(dòng)創(chuàng)建的基本包裝類型的對(duì)象,則只存在于一行代碼的執(zhí)行瞬間,然后立即銷毀。這意味著我們不能在運(yùn)行時(shí)為基本類型值添加屬性和方法。
基本包裝類型無法給自己創(chuàng)建屬性和方法,但是可以調(diào)用系統(tǒng)內(nèi)置的屬性和方法。
對(duì)基本包裝類型的實(shí)例調(diào)用typeof會(huì)返回object,而且所有基本包裝類型的對(duì)象在轉(zhuǎn)換為布爾類型時(shí)值都是true。
使用new調(diào)用基本包裝類型的構(gòu)造函數(shù),與直接調(diào)用同名的轉(zhuǎn)型函數(shù)是不一樣的。
var value = "25"; var number = Number(value); //轉(zhuǎn)型函數(shù) aleat(typeof number); //"number" var obj = new Number(value); //構(gòu)造函數(shù) aleat(typeof obj); //"object"Number類型
Number類型有一些靜態(tài)屬性(直接通過Number調(diào)用的屬性,而無須new運(yùn)算符)和方
法。
Number靜態(tài)屬性
屬性 | 描述 |
---|---|
MAX_VALUE | 表示最大數(shù) |
MIN_VALUE | 表示最小值 |
NaN | 非數(shù)值 |
NEGATIVE_INFINITY | 負(fù)無窮大,溢出返回該值 |
POSITIVE_INFINITY | 無窮大,溢出返回該值 |
prototype | 原型,用于增加新屬性和方法 |
例:
var box = 100; alert(box.MAX_VALUE); //沒有這種寫法,這種寫法叫做屬性 alert(Number.MAX_VALUE); //這種寫法(類型.屬性)叫做靜態(tài)屬性
Number對(duì)象的方法
方法 | 描述 |
---|---|
toString() | 將數(shù)值轉(zhuǎn)化為字符串,并且可以轉(zhuǎn)換進(jìn)制 |
toLocaleString() | 根據(jù)本地?cái)?shù)字格式轉(zhuǎn)換為字符串 |
toFixed() | 將數(shù)字保留小數(shù)點(diǎn)后指定位數(shù)并轉(zhuǎn)化為字符串 |
toExponential() | 將數(shù)字以指數(shù)形式表示,保留小數(shù)點(diǎn)后指定位數(shù)并轉(zhuǎn)化為字符串 |
toPrecision() | 指數(shù)形式或點(diǎn)形式表述數(shù),保留小數(shù)點(diǎn)后面指定位數(shù)并轉(zhuǎn)字符串 |
String類型包含了三個(gè)屬性和大量的可用內(nèi)置方法。
String對(duì)象屬性
屬性 | 描述 |
---|---|
length | 返回字符串的字符長(zhǎng)度 |
constructor | 返回創(chuàng)建String對(duì)象的函數(shù) |
prototype | 通過添加屬性和方法擴(kuò)展字符串定義 |
例:
var box = "Mr. Lee"; alert(box.constructor); //打?。? String() { [native code] }
字符串方法
方法 | 描述 |
---|---|
charAt(n) | 返回指定索引位置的字符 |
charCodeAt(n) | 以Unicode編碼形式返回指定索引位置的字符 |
fromCharCode(ascii) | 靜態(tài)方法,輸出Ascii碼對(duì)應(yīng)值 |
例:
var box = "Mr. Lee"; alert(box.charAt(1)); //打印r,等于box[1] alert(box.charCodeAt(4)); //打印76
方法 | 描述 |
---|---|
concat() | 拼接字符串 |
slice(n,m) | 返回字符串n到m之間位置的字符串,[n,m) |
substring(n,m) | 同上 |
substr(n,m) | 返回字符串n開始的m個(gè)字母 |
slice()`substring()第2`個(gè)參數(shù)指定的是字符串中最后一個(gè)字符的位置。
substr()第2個(gè)參數(shù)是返回字符的個(gè)數(shù)。
相同點(diǎn):如果沒有第2個(gè)參數(shù),則一直獲取到最后。他們不會(huì)改變字符串本身的值。
例:
var box = "Mr. Lee"; alert(box.concat(" is ","teacher!"));//字符串拼接,打?。篗r. Lee is teacher! alert(box.slice(4,6)); //截取字符串[4,6),打?。篖e alert(box.substring(4,6)); //截取字符串[4,6),打印:Le alert(box.substr(4,2)); //從索引4位置截取2個(gè)字符,打印:Le alert(box.slice(4)); //如果沒有第2個(gè)參數(shù),則一直獲取到最后一位,打印:Lee alert(box.substring(4)); //如果沒有第2個(gè)參數(shù),則一直獲取到最后一位,打?。篖ee alert(box.substr(4)); //如果沒有第2個(gè)參數(shù),則一直獲取到最后一位,打?。篖ee alert(box.slice(-2)); //7+(-2)=5,從索引5位置開始到最后,打印:ee alert(box.substring(-2)); //參數(shù)為負(fù)數(shù),則返回全部字符串,打?。篗r. Lee alert(box.substr(-2)); //7+(-2)=5,從索引5位置開始到最后,打?。篹e alert(box.slice(2,-1)); //7+(-1)=6,[2,6),打?。? Le alert(box.substring(2,-1)); //如果參數(shù)為負(fù)數(shù),直接0;如果第2個(gè)參數(shù)比第1個(gè)小,那么第2個(gè)參數(shù)提前,[0,2),打?。篗r alert(box.substr(2,-1)); //第2個(gè)參數(shù)為負(fù)數(shù),直接0,[2,0),空,打?。嚎?
方法 | 描述 |
---|---|
indexOf(str,n) | 從初始位置搜索n第1次出現(xiàn)的位置,并將搜索的索引值返回 |
lastIndexOf(str,n) | 從末尾位置搜索n第1次出現(xiàn)的位置,并將搜索的索引值返回 |
例:
var box = "Mr. Lee is Lee"; alert(box.indexOf("L")); //從初始位置搜索L第一次出現(xiàn)的位置,打?。? alert(box.lastIndexOf("L")); //從末尾位置搜索L第一次出現(xiàn)的位置,打?。?1 alert(box.indexOf("L",5)); //從索引5位置向后搜索L第一次出現(xiàn)的位置,打印:11 alert(box.lastIndexOf("L",5)); //從索引5位置向前搜索L第一次出現(xiàn)的位置,打印:4 alert(box.indexOf(-1)); //找不到,打印:-1
indexOf應(yīng)用實(shí)例:
var box = "Lorem ipsum dolor sit amet,consectetur adipisicing elit"; var postion = new Array(); var pos = box.indexOf("e"); while(pos > -1){ //pos>-1,說明找到字符串 postion.push(pos); // 用push推入數(shù)組 pos = box.indexOf("e", pos + 1); //pos+1,從e后一個(gè)位置在開始尋找。 } alert(postion); //打印:3,24,31,34,51
字符串的模式匹配方法
方法 | 描述 |
---|---|
match(pattern) | 返回pattern中的子串或null |
replace(pattern, replacement) | 用replacement替換pattern |
search(pattern) | 返回字符串中pattern開始位置 |
split(pattern) | 返回字符串按指定pattern拆分的數(shù)組 |
例:
var box = "Mr.Lee is Lee"; alert(box.match("L")); //找到L,打?。篖 否則打印:null alert(box.search("L")); //找到L的位置,打?。? alert(box.replace("L", "Q")); //把L替換成Q,打?。篗r.Qee is Lee alert(box.split(" ")); //以空格分割成字符串,打?。篗r.Lee,is,Lee
localeCompare()方法,比較兩個(gè)字符串,并返回下列值中一個(gè):
如果比較的字符串首字母比變量的首字母排在前,返回1
如果比較的字符串首字母和變量的首字母排相等,返回0
如果比較的字符串首字母比變量的首字母排在后,返回-1
例:
var box = "yellow"; alert(box.localeCompare("brick")); //打?。? alert(box.localeCompare("yellow")); //打印:0 alert(box.localeCompare("zoo")); //打印:-1
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94490.html
摘要:基本類型引用類型等,說白了就是對(duì)象。。。基本包裝類型如下基本類型毫無疑問上面的是一個(gè)基本類型,但是它卻能召喚出一個(gè)的方法,這是什么原因呢主要是因?yàn)樵诨绢愋椭?,有三個(gè)比較特殊的存在就是,這三個(gè)基本類型都有自己對(duì)應(yīng)的包裝對(duì)象。 基本類型:Undefined,Null,Boolean,Number,String 引用類型:Object,Array,Date,RegExp等,說白了就是對(duì)象。...
摘要:今天來討論一下中的基本包裝對(duì)象也叫基本包裝類型,之前剛學(xué)到這里的時(shí)候,自己也是一頭霧水,不明白這個(gè)基本包裝對(duì)象到底是個(gè)什么鬼,后來找了很多資料,終于看清了它的真面目?;绢愋鸵妙愋偷?,說白了就是對(duì)象。。。 今天來討論一下JS中的基本包裝對(duì)象(也叫基本包裝類型),之前剛學(xué)到這里的時(shí)候,自己也是一頭霧水,不明白這個(gè)基本包裝對(duì)象到底是個(gè)什么鬼,后來找了很多資料,終于看清了它的真面目。首先呢...
摘要:但是基本數(shù)據(jù)類型不是對(duì)象,不具備對(duì)象的特性不攜帶屬性沒有方法可調(diào)用。自動(dòng)裝箱即直接賦值將會(huì)比使用構(gòu)造方法的方式節(jié)省一塊堆內(nèi)存空間,并自動(dòng)入對(duì)象池。而手動(dòng)裝箱使用構(gòu)造方法會(huì)產(chǎn)生兩塊堆內(nèi)存,而且不會(huì)保存在對(duì)象池中。 概念 java在設(shè)計(jì)之初,有一個(gè)基本原則:一切皆對(duì)象。但是基本數(shù)據(jù)類型不是對(duì)象,不具備對(duì)象的特性——不攜帶屬性、沒有方法可調(diào)用。為了解決此類問題,Java為每種基本數(shù)據(jù)類型分別...
摘要:前陣子,我們分享了中的基本數(shù)據(jù)類型轉(zhuǎn)換這篇文章,對(duì)許多粉絲還是有帶來幫助的,今天講一下包裝類的的由來,及自動(dòng)裝箱拆箱的概念和原理。下面是基本數(shù)據(jù)類型與對(duì)應(yīng)的包裝類型。 showImg(https://segmentfault.com/img/remote/1460000016537706); 前陣子,我們分享了《Java中的基本數(shù)據(jù)類型轉(zhuǎn)換》這篇文章,對(duì)許多粉絲還是有帶來幫助的,今天講...
摘要:目錄導(dǎo)語包裝對(duì)象的理解三大包裝對(duì)象的知識(shí)點(diǎn)小結(jié)導(dǎo)語包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創(chuàng)建字符串時(shí),調(diào)用例如的方法,那么其內(nèi)在原理究竟是什么呢閱讀完本篇文 目錄 導(dǎo)語 1. 包裝對(duì)象的理解 2. 三大包裝對(duì)象的知識(shí)點(diǎn) 3. 小結(jié) 導(dǎo)語 包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型...
摘要:每當(dāng)讀取這個(gè)基本類型時(shí),后臺(tái)會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的基本包裝類型的對(duì)象。類型判斷主要是用來判斷基本數(shù)據(jù)類型返回類型新增所以只能用來判斷基本數(shù)據(jù)類型。引用類型基本包裝類型都會(huì)返回。 最近重溫JS高程設(shè)計(jì)以及與朋友的討論。決定趁熱打鐵記錄JS的各種類型,并做下深入總結(jié)。 js的幾種類型 基本類型:Boolean、String、Number、Null、Undefined 引用類型: 2.1 O...
閱讀 3414·2021-10-08 10:15
閱讀 5628·2021-09-23 11:56
閱讀 1479·2019-08-30 15:55
閱讀 457·2019-08-29 16:05
閱讀 2740·2019-08-29 12:34
閱讀 2052·2019-08-29 12:18
閱讀 925·2019-08-26 12:02
閱讀 1661·2019-08-26 12:00