日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JS 內(nèi)置一些對象: Date 對象 JSON 對象 包裝對象 RegExp 對象:正則表達式 全局對象 和 Error 對象

 印度阿三17 2019-12-14

內(nèi)置對象

  內(nèi)置對象就是指一個語言自帶的一些對象,供開發(fā)者使用,這些對象提供了一些常用的或是最基本而必要的功能。

  JS標(biāo)準(zhǔn)內(nèi)置對象一般我們認為有12個。其中可以通過 new 關(guān)鍵字進行實例化對象的有9個,我們叫做構(gòu)造器對象:

    Object、Boolean、String、Number、Function、Array、RegExp、Date、Error;

  還有剩下的3個對象:Math、JSON、全局對象。

?

一、Date 對象

  ECMAScript 中的 Date 對象是在早期 Java 中的 java.util.Date 類基礎(chǔ)上構(gòu)建的。為此,Date 對象使用自 UTC(Coordinated Universal Time,國際協(xié)調(diào)時間)1979 年 1 月 1 日午夜(零時)開始經(jīng)過的毫秒數(shù)來保存日期。

  

  創(chuàng)建 Date 對象

    要創(chuàng)建一個日期對象,使用new 操作符調(diào)用Date構(gòu)造函數(shù)即可。如下所示:

let dt = new Date();

    在調(diào)用Date 構(gòu)造函數(shù)時,如果不傳遞參數(shù),新創(chuàng)建的對象會自動獲得當(dāng)前本地系統(tǒng)日期和時間。

    在調(diào)用Date 構(gòu)造函數(shù)同時傳遞日期參數(shù),新創(chuàng)建的對象會獲得參數(shù)對應(yīng)的日期和時間。

new Date("January 12,2006 22:19:35");
new Date("January 12,2006");
new Date(2006,0,12,22,19,35);
new Date(2006,0,12);
new Date(1137075575000);
// 2006-01-12T14:19:35.000Z

注:上面的各種創(chuàng)建形式都表示 2006 年 1 月 12 日這一天。

?

  獲取日期的方法

  通過以下方法,可以獲取具體的日期和時間:

方法 說明
getFullYear() 返回 Date 對象“年份”部分的實際數(shù)值
getMonth() 返回 Date 對象“月份”部分的數(shù)值(0 ~ 11)
getDay() 返回 Date 對象“星期”部分的數(shù)值(0 ~ 6)
getDate() 返回 Date 對象“日期”部分的數(shù)值(1 ~ 31)
getHours() 返回 Date 對象“?時”部分的數(shù)值(0 ~ 23)
getMinutes() 返回 Date 對象“分鐘”部分的數(shù)值(0 ~ 59)
getSeconds() 返回 Date 對象“秒”部分的數(shù)值(0 ~ 59)
getMilliSeconds() 返回 Date 對象“毫秒”部分的數(shù)值(0 ~ 999)
getTime() 返回 Date 對象與 UTC 時間 1970 年 1 月 1 日午夜之間相差的毫秒數(shù)

?

?

?

?

?

?

?

?

let dt = new Date();
console.log(dt.getFullYear()); // 2019

?

設(shè)置日期的方法

  通過以下方法,可以設(shè)置具體的日期和時間:

方法 說明
setFullYear() 設(shè)置 Date 對象中的年份(四位數(shù)字)
setMonth() 設(shè)置 Date 對象中月份(0 ~ 11)
setDate() 設(shè)置 Date 對象中月的某一天 (1 ~ 31)
setHours() 設(shè)置 Date 對象中的小時 (0 ~ 23)
setMinutes() 設(shè)置 Date 對象中的分鐘 (0 ~ 59)
setSeconds() 設(shè)置 Date 對象中的秒鐘 (0 ~ 59)
setMilliSeconds() 設(shè)置 Date 對象中的毫秒 (0 ~ 999)
setTime() 以毫秒設(shè)置 Date 對象

?

?

?

?

?

?

?

?

let dt = new Date();
dt.setFullYear(2000);
console.log(dt.getFullYear()); // 2000

?

二、JSON 對象

  JSON(JavaScript Object Notation),是道格拉斯·克羅克福特(Douglas Crockford)于 2001 年發(fā)明 的一種輕量級數(shù)據(jù)存儲格式。易于閱讀和編寫,同時也易于解析和生成。 JSON 作為 JavaScript 的一個子集,同時 ActionScript、C、C#、ColdFusion、E、Java、 JavaScript、ML、ObjectiveCAML、Perl、PHP、Python、Rebol、Ruby、Lua 等一系列的語言都對 JSON 提供支持。JSON 在后來成為了一個完全獨立于語言的文本格式,也成為數(shù)據(jù)交換的理想格式。

?

  XML

    在 JSON 出現(xiàn)之前,一般使用 XML 來傳遞數(shù)據(jù)。因為 XML 是一種純文本格式,所以它適合在網(wǎng)絡(luò) 上進行數(shù)據(jù)交換。

<name>ZhangSan</name>
<age>20</age>
<gender>male</gender>

  XML 本身不算太復(fù)雜,但是,后來加上了 DTD、XSD、XPath、XSLT 等一大堆復(fù)雜的規(guī)范以后,使用起來就沒那么友好,慢慢“沒落”。

  JSON 語法

  JSON 作為 JavaScript 的一個子集,它所支持的數(shù)據(jù)類型也與 JavaScript 中數(shù)據(jù)類型基本一致:

?

    number:和 JavaScript 的 number 完全一致;

    boolean:和 JavaScript 的 boolean 完全一致;

    string:和 JavaScript 的 string 類似;

    null:和 JavaScript 的 null 完全一致;

    array:和 JavaScript 的數(shù)組表示方式 [] 完全一致;

    object:和 JavaScript 的對象表示方式 {} 類似;

?

?

  為了保證各種語言的統(tǒng)一解析,JSON 規(guī)定字符串必須用雙引號? " ",對象的鍵也必須用雙引號 " "。

[
     {
         "name": "ZhangSan",
         "age": 20,
         "friends": ["HanMeiMei", "LiZiMing"],
         "isMarried": false,
         "spouse": null
     },
     {
         "name": "HanMeiMei",
         "age": 30,
         "friends": ["ZhangSan"],
         "isMarried": true,
         "spouse": "LiZiMing"
     }
]                

  

  JSON 與 JavaScript 對象

  JSON 中的 [] 與 JavaScript 中的數(shù)組對象、JSON 中的 {} 與 JavaScript 中的 JSON 式對象,他們并不是同一個東西。

  JSON 是 JavaScript 中對象的字符串表示方式,本質(zhì)上是 string,而JavaScript 中的數(shù)組和 JSON 式對 象,本質(zhì)上是 object。

?

  JSON 與 JavaScript 對象互相轉(zhuǎn)換

    JSON 作為一種數(shù)據(jù)存儲格式變得日益流行。從 ES5 開始,就開始出現(xiàn)全局的 JSON 對象,該對象提 供了兩種方法,可以將 JSON 字符串和 JavaScript 對象進行相互轉(zhuǎn)換。

      stringify()  JSON 對象的 stringify() 方法用于將 JavaScript 對象轉(zhuǎn)換為 JSON 字符串

let data = [{ name: 'HanMeiMei', age: 20 }];
let JSONData = JSON.stringify(data);

?

      parse()  JSON 對象的 parse() ?法?于將 JSON 字符串轉(zhuǎn)換為 JavaScript 對象

let JSONData = '[{ "name": "HanMeiMei", "age": 20 }]';
let data = JSON.parse(JSONData);

?

Math 對象

  JavaScript 中提供了一個 Math 對象,用來使用一些數(shù)學(xué)公式和獲取數(shù)學(xué)中的常用值。

  與直接編寫的計算功能相比,Math 對象提供的計算功能執(zhí)行起來要快得多。

?

  Math 對象的屬性

    PI     返回圓周率(約等于3.14159)

?

  Math 對象的方法

方法 說明
abs(x) 返回數(shù)的絕對值
ceil(x) 對數(shù)進行上舍入
floor(x) 對數(shù)進行下舍入
round(x) 對數(shù)進行四舍五入
max(x,y...) 返回 x,y... 中的最高值
min(x,y... 返回 x,y...中的最低值
pow(x,y) 返回 x 的 y 次冪
random() 返回 0 ~ 1 之間的隨機數(shù)(0<=x<1)

?

?

?

?

?

?

?

?

//隨機數(shù)
let num = Math.random(); // 0 <= num < 1
let max = 100;
// 0 <= num < max
num = Math.random() * max;
// 0 <= num <= max 整數(shù)
num = Math.round(Math.random() * max);
num = parseInt(Math.random() * (max   1)); // 效率更?
let min = 50;
// min <= num <= max 整數(shù)
num = Math.round(Math.random() * (max - min))   min;

實例:

  創(chuàng)建一個函數(shù),接收兩個參數(shù),生成一個取值范圍在兩個參數(shù)之間的隨機整數(shù)。

function random(min, max) {
 if (!max) {
 return parseInt(Math.random() * (min   1));
 }
 return parseInt(Math.random() * (max - min   1))   min;
}

?

基本類型包裝對象

  對象是 JavaScript 語言最主要的數(shù)據(jù)類型,三種原始類型的值:數(shù)值、字符串、布爾值,在一定條件 下,也會自動轉(zhuǎn)為對象,也就是原始類型的“包裝對象”(wrapper)。

  所謂“包裝對象”,是指與數(shù)值、字符串、布爾值分別相對應(yīng)的 Number、String、Boolean 三個內(nèi)置對象。

  這三個內(nèi)置對象可以把原始類型的值轉(zhuǎn)換成(包裝成)對象;包裝后的對象也能轉(zhuǎn)換成 (解包裝成)原始類型的值;這個過程在一定條件下可以自發(fā)的完成,

  這兩個過程分別稱為“自動裝箱”和“自動拆箱”, 包裝對象的設(shè)計目的:

    首先是使得“對象”這種類型可以覆蓋 JavaScript 所有的值,整門語言有一個通用的數(shù)據(jù)模型,

    其次是使得原始類型的值也有辦法使用自己的屬性和方法。

  在 JavaScript 中,曾有一種說法叫做“一切皆對象”,包裝對象就有點這個意思,想要讓一切都用對象來表示。

let str1 = "abc";// 基本數(shù)據(jù)類型
let str2 = new String("abc");// 基本數(shù)據(jù)對應(yīng)的包裝對象
console.log(typeof str1);// 打印結(jié)果:string
console.log(typeof str2);// 打印結(jié)果:object
console.log(str1 "def");// 打印結(jié)果:abcdef
console.log(str2 "def");// 打印結(jié)果:abcdef (自動拆箱,參與基本數(shù)據(jù)類型運算)
console.log(str1.length);// 打印結(jié)果:3 (自動裝箱,使用包裝對象的屬性)

?

  valueOf() 和 toString()

  兩種包裝對象的方法:valueOf() 和 toString()。

    valueOf() 方法返回包裝對象實例對應(yīng)的原始類型的值:

new Number(111).valueOf() // 結(jié)果:111
new String('abc').valueOf() // 結(jié)果:"abc"
new Boolean(false).valueOf() // 結(jié)果:false

    toString() 方法返回對應(yīng)的字符串形式:

new Number(111).toString() // 結(jié)果:"111"
new String('abc').toString() // 結(jié)果:"abc"
new Boolean(false).toString() // 結(jié)果:"false"

?

  String 對象

    定義字符串,除了最常用的通過引號定義一個字符串之外,還可以通過構(gòu)造函數(shù) String 來定義字符串。

    

let str1 = 'hello';
let str2 = new String('string');
console.log( typeof str1 ); // string
console.log( typeof str2 ); // object

注:這兩種方式創(chuàng)建出來的字符串除了數(shù)據(jù)類型不一樣之外,由于自動裝拆箱的機制,除了一些特別的情況 (比如全等),其它時候在使用上是完全一樣的。

?

    字符串的屬性  length:返回字符串的長度。

    

let str = 'hello string';
console.log( str.length );

注意:只能獲取,不能設(shè)置。

?

    字符串的方法

        查找字符:

      charAt(index)      返回在指定位置index(從 0 開始)的字符

      charCodeAt(index)   ? 返回在指定位置index(從 0 開始)的字符的ascii編碼

    

        查找位置:

      indexOf(str)      ? 從左往右查找元素,返回匹配的第一個字符str的下標(biāo)。沒有返回-1

      lastIndexOf(str)    ? ?從右往左查找元素,返回匹配的第一個字符str的下標(biāo)。沒有返回-1

?

        字符串轉(zhuǎn)數(shù)組:

      split(str)         把一個字符串按指定符號str分割成字符串?dāng)?shù)組

?

        去掉空格:

      trim()          去除字符串兩邊的空白

      注:也有去除某一邊的。

        連接兩個字符串:

      concat(str)        方法用于當(dāng)前字符串和另一個字符串str,得到新字符串

    

        提取字符串:

      slice(start,end)      ? 截取start到end(不包括)的字符串

      substr(start,length)     截取start開始的length?度的字符串

      subString(start,end)    ? 截取start到end(不包括)的字符串、

?

        大小寫轉(zhuǎn)換:

      toLowerCase()      把字符串轉(zhuǎn)換為小寫

      toUpperCase()      把字符串轉(zhuǎn)換為大寫

let str = " Abc&Def&Ghi&Jkl ".trim().toLowerCase().split("&").join("");
console.log(str);// 打印結(jié)果:"abcdefghijkl"

?

Number 對象

  定義數(shù)字,同 String。

let n1 = 111;
let n2 = new Number('111');
console.log( typeof n1 ); // number
console.log( typeof n2 ); // object

  

  數(shù)字的方法

  我們可以直接通過自動裝箱來使用基本數(shù)據(jù)類型對應(yīng)包裝對象的屬性和方法,如 "123".length ,但是數(shù)字類型由于“.”可以解析成小數(shù)點,

  所以在使用時為了避免歧義要使用兩個點或者用“()”括起來, 如:9..toString() 或 (9).toString()。

?

    toFixed(num)       該數(shù)轉(zhuǎn)為指定位數(shù)的小數(shù),然后返回這個小數(shù)對應(yīng)的字符串。參數(shù)num(0- 20)為小數(shù)位數(shù)

    toPrecision(num)    ??返回該數(shù)轉(zhuǎn)為指定位數(shù)的有效數(shù)字,參數(shù)num(0-21)為有效數(shù)字的位數(shù)

    toExponential(num)   ? 返回該數(shù)轉(zhuǎn)為科學(xué)計數(shù)法形式,保留num(0-20)位小數(shù)?

    數(shù)字的方法,用的太少了。

?

Boolean 對象

  定義布爾值,同 String。

  

let n1 = true;
let n2 = new Boolean(true);
console.log( typeof n1 ); // boolean
console.log( typeof n2 ); // object

?

RegExp 對象

  RegExp 對象,即正則表達式(regular expression),描述了一種字符串匹配的模式/規(guī)則 (pattern)??梢杂脕韺崿F(xiàn)驗證、搜索、替換等對字符串的操作。

  正則的聲明

    聲明一個正則對象有兩種方式:

      字面量

let re = /pattern/modifiers;

      構(gòu)造函數(shù)

let re = new RegExp( pattern, modifiers );

  參數(shù)說明:

    pattern:模式。描述了一個表達式模式(規(guī)則)。

    modifiers:修飾符。描述了檢索時是否全局檢索、是否區(qū)分大小寫等。

let re = /a/; // 表示這個 re 的正則的規(guī)則就是“包含a”

?

  正則對象的方法

方法 說明 返回值
test() 在字符串中搜索指定的值 布爾值
exec() 在字符串中搜索指定的值 對象,包含搜索值、搜索值位置、源字符串

?

?

?

?

let re = /to/;
let str = 'nice to meet you ~';
console.log(re.test(str));
// true
console.log(re.exec(str));
// [ 'to', index: 5, input: 'nice to meet you ~' ]

?

   常用規(guī)則

      字符組,用于匹配某一組字符中的任意一個字符。

表達式 說明
[] 匹配?括號中的任意一個字符
[^] 匹配不在方括號中的任意一個字符
[0-9] 匹配 0 ~ 9 之間的任意一個數(shù)字
[a-z] 匹配 a ~ z 之間的任意一個小寫字母
[A-Z] 匹配 A ~ Z 之間的任意一個大寫字母

?

let re = /[abc]/;
let str = 'nice to meet you';
re.test(str); // true

?

        簡記:

表達式 說明
\w 匹配任意數(shù)字、字母、下劃線字符。等同于 [0-9a-zA-Z_]
\W 匹配任意非數(shù)字、字母、下劃線字符。等同于 [^0-9a-zA-Z_]
\d 匹配任意數(shù)字字符。等同于 [0-9]
\D 匹配任意非數(shù)字字符。等同于 [^0-9]
\s 匹配空白字符
\S 匹配任意非空白字符
. 匹配除回車(\r),換行(\n),行分隔符(\u2028)和段分隔符(\u2029)以外的任意字符

注:妥善的利用互補屬性,可以得到一些巧妙的效果。如:[\s\S]、[\w\W]、[\d\D] 都可以表示任意字符。

?

        量詞:用來匹配目標(biāo)字符的出現(xiàn)個數(shù)。

表達式 說明
n{x} 匹配 x 個 n
n{x,y} 匹配 x 到 y 個 n
n{x,} 匹配 x 到多個 n
n? 匹配 0 個到 1 個 n,等同于 n{0,1}
n 匹配 1 個到多個 n,等同于 n{1,}
n* 匹配 0 個到多個 n,等同于 n{0,
// 匹配美式 color 和 英式 colour
let re = /colou?r/;
console.log(re.test('color')); // true
console.log(re.test('colour')); // true

?

          特殊字符

表達式 說明
| 表示“或
\ 轉(zhuǎn)義符
() 對規(guī)則進行分組
^n 匹配任何以 n 開頭的字符
n$ 匹配任何以 n 結(jié)尾的字符

          修飾符

表達式 說明
i 匹配時不區(qū)分大小寫
g 全局匹配,即不會匹配到一個就停止
m 多行匹配,即不會只匹配一行字符(需結(jié)合 ^ 或 $ 一起使用),其中多行表示通過"\n"換 行
let re = /^b./m;
let str = "aaaaa\nbaaaaa\naaaaa";
console.log(re.test(str));

?

  支持正則的 String 對象的方法

方法 描述
search() 用于搜索字符串中指定的子字符串,或是與正則表達式相匹配的子字符串。
match() 用于搜索字符串中指定的子字符串,或是與正則表達式相匹配的子字符串。
replace() 用于在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
split() 用于在字符串中通過指定字符分割字符串成數(shù)組,或通過指定正則表達式匹配的子串來分割。
let str = 'Mr Blue has a blue house and a blue car';
console.log(str.search('blue'));// 打印結(jié)果:14
console.log(str.search(/blue/gi));// 打印結(jié)果:3
console.log(str.match('blue'));// 打印結(jié)果:["blue", index: 14, input: "Mr
Blue has a blue house and a blue car", groups: undefined]
console.log(str.match(/blue/gi));// 打印結(jié)果:["Blue", "blue", "blue"]
console.log(str.replace('blue', 'red'));// 打印結(jié)果:"Mr Blue has a red
house and a blue car"
console.log(str.replace(/blue/gi, 'red'));// 打印結(jié)果:"Mr red has a red
house and a red car"

?

?

其它對象

  全局對象

    對于任何 JavaScript 程序,當(dāng)程序開始運行時,JavaScript 解釋器都會初始化一個全局對象。

    全局對象,它預(yù)定義了全局的屬性、函數(shù)、對象、構(gòu)造函數(shù)以便你開發(fā)使用。

    比如說:

        全局的屬性: undefined、Infinity 和 NaN

        全局的對象: Math、JSON 和 Number

        全局的函數(shù): isNaN()、isFinite()、parseInt() 和 eval() 等

        全局的構(gòu)造器對象: Date()、RegExp()、String()、Object() 和 Array() 等

注:不同的環(huán)境中,全局對象是不同的。

?

  Error對象

    error,指程序中的非正常運行狀態(tài),在其他編程語言中稱為“異?!被颉板e誤”。

    解釋器會為每個錯誤情形創(chuàng)建并拋出一個 Error 對象,其中包含錯誤的描述信息。

    ECMAScript 定義了六種類型的錯誤。除此之外,還可以使用 Error 構(gòu)造方法創(chuàng)建自定義的 Error 對象, 并使用 throw 語句拋出該對象。

    也可以使用 try-catch-finally 語句處理異常。

        六種錯誤:

              ReferenceError :找不到對象時

              TypeError :錯誤的使用了類型或?qū)ο蟮姆▏〞r

              RangeError :使用內(nèi)置對象的方法時,參數(shù)超范圍

              SyntaxError :語法寫錯了

              EvalError :錯誤的使用了 Eval

              URIError : URI 錯誤

throw new Error("我錯了!");//通過throw關(guān)鍵字拋出?定義錯誤


try {
 say("Welcome!");
}catch(err) {//如果發(fā)?錯誤,捕獲錯誤對象,存放在變量err中
 console.log(err.name   ":"   err.message);//打印錯誤對象的信息
}

?

      

來源:https://www./content-4-597201.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多