亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文詳解JavaScript中內(nèi)建對(duì)象

 更新時(shí)間:2024年11月01日 08:48:16   作者:木子七  
這篇文章主要為大家詳細(xì)介紹了JavaScript中內(nèi)建對(duì)象的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1.數(shù)組解構(gòu)

const arr = ["1","2","3"]

let a,b,c

// 解構(gòu)賦值
//將數(shù)組的第一個(gè)元素賦值給第一個(gè)變量,第二個(gè)元素賦值給第二個(gè)變量,依次類推

[a,b,c] = arr
console.log(a,b,c) // 1 2 3
// 聲明變量同時(shí)解構(gòu)
let [a,b,c] = ["1","2","3"]
console.log(a,b,c) // 1 2 3
// 如果變量數(shù)大于元素?cái)?shù)量,則超出的變量部分賦值為undefined
const arr = ["1","2","3"]
let [a,b,c,d] = arr
console.log(a,b,c,d) // 1 2 3 undefined
// 默認(rèn)值,如果變量聲明了默認(rèn)值,解構(gòu)為undefined的時(shí)候,則會(huì)使用默認(rèn)值,否則使用對(duì)應(yīng)元素
const arr = ["1","2","3"]
let [a,b,c=10,d=11] = arr
console.log(a,b,c,d) // 1 2 3 11
// 解構(gòu)數(shù)組時(shí)可以使用...獲取剩余的元素

const arr = ["1","2","3","4","5"]
// 第一個(gè)元素賦值給a,第二個(gè)元素賦值給b,其余元素賦值給c
let [a,b, ...c] = arr
console.log(a) // 1
console.log(b) // 2
console.log(c) // ['3','4','4']
// 解構(gòu)多維數(shù)組
const arr = [[1,2,3],[4,5,6]]
let [[a,b,c],obj] = arr

console.log(a,b,c) // 1 2  3
console.log(obj) // [4,5,6]

2.對(duì)象解構(gòu)

const user = {"name":"q",age:18}
// 聲明變量同時(shí)解構(gòu)對(duì)象
let {name,age} = user

console.log(name,age) // q  18
// 先聲明變量,再解構(gòu)對(duì)象
const user = {"name":"q",age:18}

let name,age

({name,age} = user)  // {} 在js中是代碼塊,所以需要在外面使用()
console.log(name,age) // q 18
const user = {"name":"q",age:18}

// 如果變量名與屬性名不匹配,則解構(gòu)為undefined
let {a,b} = user
console.log(a,b) // undefined undefined

// 可以給變量起別名再解構(gòu)
// 可以給變量既起別名,又設(shè)置默認(rèn)值
let {name:c,age:d=20} = user

console.log(c,d) // q  18

3.對(duì)象的序列化

JS中的對(duì)象使用時(shí)都是存在于計(jì)算機(jī)的內(nèi)存中的,序列化指將對(duì)象轉(zhuǎn)換為一個(gè)可以存儲(chǔ)的格式,在JS中對(duì)象的序列化通常是將一個(gè)對(duì)象轉(zhuǎn)換為字符串(JSON字符串)

const user = {name:"l",age:18}

// 將一個(gè)對(duì)象轉(zhuǎn)換為json字符串
const strUser = JSON.stringify(user)
console.log(strUser)

// 將一個(gè)json字符串轉(zhuǎn)換為js對(duì)象
const objUser = JSON.parse(strUser)
console.log(objUser)

編寫(xiě)JSON的注意事項(xiàng):

JSON字符串有兩種類型:

  • JSON對(duì)象 {}
  • JSON數(shù)組 []

JSON字符串的屬性名必須使用雙引號(hào)引起來(lái)

JSON中可以使用的屬性值(元素)

  • 數(shù)字(Number)
  • 字符串(String) 必須使用雙引號(hào)
  • 布爾值(Boolean)
  • 空值(Null)
  • 對(duì)象(Object {})
  • 數(shù)組(Array [])
// 利用json完成深復(fù)制,將對(duì)象轉(zhuǎn)換成字符串,再將字符串轉(zhuǎn)換成一個(gè)新對(duì)象
const strUser = JSON.stringify(user)
const objUser = JSON.parse(strUser)

4.Map

Map用來(lái)存儲(chǔ)鍵值對(duì)結(jié)構(gòu)的數(shù)據(jù)(key-value)

Object中存儲(chǔ)的數(shù)據(jù)就可以認(rèn)為是一種鍵值對(duì)結(jié)構(gòu)

Map和Object的主要區(qū)別:

  • Object中的屬性名只能是字符串或符號(hào),如果傳遞了一個(gè)其他類型的屬性名,JS解釋器會(huì)自動(dòng)將其轉(zhuǎn)換為字符串
  • Map中任何類型都可以稱為數(shù)據(jù)的key

4.1map的使用

const info = new Map()

// 設(shè)置鍵值對(duì)
info.set("name","l")
info.set({},"a")
info.set(NaN,"b")

console.log(info)  // Map(3) { 'name' => 'l', {} => 'a', NaN => 'b' }

// 當(dāng)前map大小
console.log(info.size) // 3


// 獲取map的所有的key
console.log(info.keys())  // [Map Iterator] { 'name', {}, NaN }


// 獲取map所有的value
console.log(info.values()) // [Map Iterator] { 'l', 'a', 'b' }


// 檢查map是否包含指定key,包含true否則false
console.log(info.has(NaN)) // true

// 通過(guò)key獲取指定元素
console.log(info.get("name"))  // l

// 刪除元素
info.delete("name")
console.log(info)  // Map(2) { {} => 'a', NaN => 'b' }

// 清空map
info.clear()
console.log(info)  // Map(0) {}

4.2map的轉(zhuǎn)換

const info = new Map()

info.set("name","l")
info.set({},"a")
info.set(NaN,"b")

// 使用Array.from將 map轉(zhuǎn)換為數(shù)組
const arr = Array.from(info)
console.log(arr)  // [ [ 'name', 'l' ], [ {}, 'a' ], [ NaN, 'b' ] ]
const arr = [["name",1],["age",2]]

// 將二維數(shù)組轉(zhuǎn)換為map
const map = new Map(arr)
console.log(map) // Map(2) { 'name' => 1, 'age' => 2 }

4.3遍歷map

const info = new Map()

info.set("a",1)
info.set("b",2)


// 方式一
for (const entry of info){
    const [key,value] = entry
    console.log(key,value)
}

for (const [key,value] of info){
    console.log(key,value)
}

// 方式二

info.forEach((key,value)=>{
    console.log(key,value)
})

5.Set

  • Set用來(lái)創(chuàng)建一個(gè)集合
  • 它的功能和數(shù)組類似,不同點(diǎn)在于Set中不能存儲(chǔ)重復(fù)的數(shù)據(jù)
// 創(chuàng)建集合
const set = new Set()


// 添加數(shù)據(jù),如果集合中已經(jīng)存在要添加的元素,則不會(huì)添加
set.add("a")
set.add("b")


// 獲取集合的大小
console.log(set.size) // 2

// 檢查集合中是否包含指定元素,包含true否則false
console.log(set.has("a")) // true


// 讀取指定元素-需要將set轉(zhuǎn)換成數(shù)組,然后通過(guò)下標(biāo)讀取
const arr = [...set]
console.log(arr[0]) // a

// 刪除元素
set.delete("b")

//  遍歷集合
for (const v of set){
    console.log(v)
}

// 通過(guò)數(shù)組創(chuàng)建集合,基于集合元素的唯一性,會(huì)對(duì)數(shù)組進(jìn)行去重

const arr = [1,2,3,4,4,1,1,5]

const set =  new Set(arr)
console.log(set) // Set(5) { 1, 2, 3, 4, 5 }

6.Math

Math是一個(gè)工具類,提供了數(shù)學(xué)運(yùn)算的一些常量和方法

用法大全

// 常量 圓周率
console.log(Math.PI)  // 3.141592653589793

// 求一個(gè)數(shù)的絕對(duì)值
console.log(Math.abs(-123))  // 123

// 求多個(gè)值中的最小值
console.log(Math.min(1, 2, 3))  // 1

// 求多個(gè)值中的最大值
console.log(Math.max(1,2,3))  // 3

// 求指定數(shù)值的冪次方
console.log(Math.pow(2,3)) // 8

// 求一個(gè)數(shù)的平方根
console.log(Math.sqrt(4)) // 2

// 向下取整
console.log(Math.floor(1.5)) // 1

// 向上取整
console.log(Math.ceil(1.5)) // 2

// 四舍五入取整
console.log(Math.round(3.5)) // 4

// 去除小數(shù)位
console.log(Math.trunc(3.5)) // 3

// 生成0~1之間的隨機(jī)浮點(diǎn)數(shù),不包含0和1
console.log(Math.random()) // 0.11258771607929718

// 生成 0~5之間的隨機(jī)整數(shù)
// Math.random范圍 是0~1,*5將范圍擴(kuò)大5倍 0~5 默認(rèn)不包含0和5,然后四舍五入,根據(jù)四舍五入包含0和5
console.log(Math.round(Math.random() * 5))

// 生成 x ~ y 任意范圍的隨機(jī)數(shù)
/*
1~6之間的隨機(jī)數(shù)
范圍擴(kuò)大5倍,是0~5,然后+1是1~6,得出隨機(jī)小數(shù)后四舍五入,包含1和6
*/
console.log(Math.round(Math.random() * 5 + 1))


// 11~20之間的整數(shù)
// [0,1] -> [0,9] -> [0+11,9+11]
// 先寫(xiě)+號(hào)后面的部分,11,,20-11=9
console.log(Math.round(Math.random() * 9 + 11))


// 根據(jù) 四舍五入、取證等方法的規(guī)則,來(lái)決定左右數(shù)值是否包含

7.Date

在JS中所有的和時(shí)間相關(guān)的數(shù)據(jù)都由Date對(duì)象來(lái)表示

用法大全

7.1Date使用

// 創(chuàng)建當(dāng)前的時(shí)間的對(duì)象
let date = new Date()
console.log(date) // 2024-10-30T10:48:29.454Z

// 創(chuàng)建指定時(shí)間對(duì)象-年,月(從下標(biāo)0開(kāi)始),日,時(shí),分,秒,毫秒
date = new Date(2024,9,30,13,13,13,13)
console.log(date) // 2020-01-01T05:13:13.000Z

// 創(chuàng)建指定時(shí)間的對(duì)象-通過(guò)時(shí)間字符串-年-月-日 時(shí):分:秒
date = new Date("2024-10-30 12:00:00")
console.log(date) // 2024-10-30T04:00:00.000Z

// 創(chuàng)建指定時(shí)間的對(duì)象-通過(guò)時(shí)間戳
date = new Date(1730265193013)
console.log(date) // 2024-10-30T05:13:13.013Z




// 獲取時(shí)間對(duì)象的年份
console.log(date.getFullYear())
// 獲取時(shí)間對(duì)象的月份-返回的是月份的索引,索引從0開(kāi)始
console.log(date.getMonth())
// 獲取時(shí)間對(duì)象的日
console.log(date.getDate())
// 獲取日期對(duì)象是周幾(0-6) 0表示周日
console.log(date.getDay())
// 返回當(dāng)前日期對(duì)象的時(shí)間戳
console.log(date.getTime())

// 返回當(dāng)前時(shí)間的時(shí)間戳
console.log(Date.now())

7.2Date格式化

let date = new Date()


// 將日期轉(zhuǎn)換為本地時(shí)間格式字符串
let time = date.toLocaleDateString()
console.log(time)  // 10/31/2024

// 將時(shí)間轉(zhuǎn)換為本地時(shí)間格式字符串
time = date.toLocaleTimeString()
console.log(time) // 10:32:05 AM

// 日期時(shí)間轉(zhuǎn)換為本地時(shí)間格式字符串
time = date.toLocaleString()
console.log(time) // 10/31/2024, 10:32:50 AM

// 日期時(shí)間轉(zhuǎn)換為指定地區(qū)、格式字符串-指定國(guó)家時(shí)間
time = date.toLocaleString(
    "en-US", // 指定語(yǔ)言和國(guó)家
    {dateStyle: "full", timeStyle: "full"}
    //                             dateStyle 日期的風(fēng)格
    //                             timeStyle 時(shí)間的風(fēng)格
    //                                 full
    //                                 long
    //                                 medium
    //                                 short
    //                             hour12 是否采用12小時(shí)值
    //                                 true
    //                                 false
    //                             weekday 星期的顯示方式
    //                                 long
    //                                 short
    //                                 narrow
    //
    //                             year
    //                                 numeric
    //                                 2-digit


)
console.log(time)

8.包裝類

在JS中,除了直接創(chuàng)建原始值外,也可以創(chuàng)建原始值的對(duì)象

//         通過(guò) new String() 可以創(chuàng)建String類型的對(duì)象
//         通過(guò) new Number() 可以創(chuàng)建Number類型的對(duì)象
//         通過(guò) new Boolean() 可以創(chuàng)建Boolean類型的對(duì)象

//         注意:千萬(wàn)不要這么做,通過(guò)該方式創(chuàng)建的是對(duì)象,無(wú)法與原始值做比較

let str = new String("hello world")
let num = new Number(10)
let bool = new Boolean(true)
num.max = 100 // 給num對(duì)象設(shè)置屬性

console.log(str) // [String: 'hello world']
console.log(num) // [Number: 10]
console.log(num.max) // 100 
console.log(bool) // [Boolean: true]

console.log(num === 10) // false

包裝類:

  • JS中一共有5個(gè)包裝類
  • String --> 字符串包裝為String對(duì)象
  • Number --> 數(shù)值包裝為Number對(duì)象
  • Boolean --> 布爾值包裝為Boolean對(duì)象
  • BigInt --> 大整數(shù)包裝為BigInt對(duì)象
  • Symbol --> 符號(hào)包裝為Symbol對(duì)象

通過(guò)包裝類可以將一個(gè)原始值包裝為一個(gè)對(duì)象

當(dāng)我們對(duì)一個(gè)原始值調(diào)用方法或?qū)傩詴r(shí),JS解釋器會(huì)臨時(shí)將原始值包裝為對(duì)應(yīng)的對(duì)象,然后調(diào)用這個(gè)對(duì)象的屬性或方法

// 原始值
let str = "hello world"

// 給原始值添加屬性,會(huì)將原始值轉(zhuǎn)換為一次性臨時(shí)的原始值對(duì)象
str.name = "11111"
// 賦值和讀取兩次調(diào)用str.name,是兩次臨時(shí)的原始值對(duì)象,無(wú)法通過(guò)該方法讀取
console.log(str.name) // undefined



let num = 100
// 原始值number是沒(méi)有方法的,當(dāng)調(diào)用方法時(shí),將num臨時(shí)的轉(zhuǎn)為number對(duì)象,調(diào)用number對(duì)象的toString方法
num = num.toString()

由于原始值會(huì)被臨時(shí)轉(zhuǎn)換為對(duì)應(yīng)的對(duì)象,這就意味著原始值對(duì)象中的方法都可以直接通過(guò)原始值來(lái)調(diào)用

// 字符串的本質(zhì)是一個(gè)字符數(shù)組, hello-->["h","e","l","l","0"]

let str = "hello"

// 可以通過(guò)操作數(shù)組的一些方法去操作字符串

// 索引讀取字符-不可以負(fù)索引
console.log(str[0]) // h
// 遍歷字符串
for (let char of str){
    console.log(char)
}
// 獲取字符串長(zhǎng)度
console.log(str.length) // 5

// 根據(jù)索引獲取字符串,可以接受負(fù)數(shù)索引
console.log(str.at(-1)) // o

// 索引讀取字符-不可以負(fù)索引
console.log(str.charAt(0)) // h

// 用來(lái)連接兩個(gè)或者多個(gè)字符串,返回一個(gè)新字符串
console.log(str.concat(" world"," !")) // hello world !


// 檢查字符串中是否包含某個(gè)內(nèi)容,返回true或者false
console.log(str.includes("ll")) //檢測(cè)全部字符串 true
console.log(str.includes("h",2)) // 從下標(biāo)2開(kāi)始檢測(cè)  false

// 檢查指定字符第一次出的位置
console.log(str.indexOf("l")) // 2

// 檢查指定字符最后一次出現(xiàn)的位置
console.log(str.lastIndexOf("l")) // 3

// 檢查字符串是否以指定內(nèi)容開(kāi)頭
console.log(str.startsWith("he")) // true

// 檢查字符串是否以指定內(nèi)容結(jié)尾
console.log(str.endsWith("o")) // true

// 給字符串補(bǔ)位 如果字符串長(zhǎng)度不夠指定長(zhǎng)度,從開(kāi)頭開(kāi)始補(bǔ),返回一個(gè)新字符串,不指定補(bǔ)位字符,則默認(rèn)是空
console.log(str.padStart(7,"0")) // 00hello
// 給字符串補(bǔ)位 如果字符串長(zhǎng)度不夠指定長(zhǎng)度,從結(jié)尾開(kāi)始補(bǔ)0,返回一個(gè)新字符串
console.log(str.padEnd(8,"0")) // hello000

// 使用一個(gè)新字符串替換字符串中的一個(gè)指定內(nèi)容,返回一個(gè)新字符串
console.log(str.replace("l","a")) // healo


// 使用一個(gè)新字符串替換所有指定內(nèi)容,返回一個(gè)新字符串
console.log(str.replaceAll("l","a")) // heaao

// 對(duì)字符串進(jìn)行切片,左閉右開(kāi)
console.log(str.slice(1,3)) // el

// 截取字符串,左閉右開(kāi)
console.log(str.substring(1,3)) // el

// 將一個(gè)字符串拆分為一個(gè)數(shù)組,參數(shù)指定以什么字符間隔拆分
console.log(str.split("")) // [ 'h', 'e', 'l', 'l', 'o' ]

// 將字符串轉(zhuǎn)換為小寫(xiě)
console.log(str.toLowerCase()) // hello

// 將字符串轉(zhuǎn)換為大寫(xiě)
console.log(str.toLocaleUpperCase()) // HELLO

// 去除首尾空格
console.log(str.trim())

// 去除開(kāi)始空格
console.log(str.trimStart())

// 去除結(jié)束空格
console.log(str.trimEnd())

9.正則表達(dá)式

  • 正則表達(dá)式用來(lái)定義一個(gè)規(guī)則
  • 通過(guò)這個(gè)規(guī)則計(jì)算機(jī)可以檢查一個(gè)字符串是否符合規(guī)則或者將字符串中符合規(guī)則的內(nèi)容提取出來(lái)
  • 正則表達(dá)式也是JS中的一個(gè)對(duì)象,所以要使用正則表達(dá)式,需要先創(chuàng)建正則表達(dá)式的對(duì)象

9.1創(chuàng)建正則表達(dá)式對(duì)象

// 通過(guò)構(gòu)造函數(shù)創(chuàng)建正則表達(dá)式對(duì)象,RegExp() 接收兩個(gè)字符串參數(shù) 1.正則表達(dá)式 2.匹配模式
// 字符串轉(zhuǎn)義原因,表達(dá)式編寫(xiě)注意轉(zhuǎn)義
let regObj = new RegExp("\\w","i")


// 使用字面量創(chuàng)建一個(gè)正則表達(dá)式對(duì)象, /正在表達(dá)式/匹配模式
// 字面量創(chuàng)建不用考慮轉(zhuǎn)義問(wèn)題
let reg = /\w/i


let reg2 = new RegExp("a")
// test方法:get定的字符串str中測(cè)試是否存在與正則表達(dá)式re匹配的部分
console.log(reg2.test("abc")) // 字符串str 表達(dá)式a  str中包含a   返回true

9.2正則表達(dá)式語(yǔ)法

// 在正則表達(dá)式中大部分字符都可以直接寫(xiě)
// | 在正則表達(dá)式中表示或

// 字符串是否有abc或者bcd
let re = /abc|bcd/



// [] 表示字符集

// 字符串是否包含字符集里面的任意字母,等同于 a | b | c
re = /[abc]/

// 任意的小寫(xiě)字母
re = /[a-z]/

// 任意的大寫(xiě)字母
re = /[A-Z]/

// 任意的大小寫(xiě)字母
re = /[a-zA-Z]/

// 任意的數(shù)字
re = /[0-9]/


// [^]表示排除

// 除了a以外的任意字符
re = /[^a]/

// .表示除了換行以外的任意字符 ,如果想匹配. 需要轉(zhuǎn)義 /\./
re = /./

// 其他字符集

// 任意的單詞字符 [A-Za-z0-9_]
re = /\w/

// 排除單詞字符  [^A-Za-z0-9_]
re = /\W/

// 任意數(shù)字 [0-9]
re = /\d/

// 排除數(shù)字 [^0-9]
re = /\D/

// 空格
re = /\s/

// 排除空格
re = /\S/

// 單詞邊界
re = /\b/

// 排除單詞邊界
re = /\B/

// 開(kāi)頭和結(jié)尾,^表示字符串的開(kāi)頭,$表示字符串的結(jié)尾

// 匹配開(kāi)始位置的a
re = /^a/

// 匹配結(jié)束位置的a
re = /a$/

// 匹配字幕a,完全匹配,字符串和正則完全一致
re = /^a$/

9.3量詞

// 3個(gè)a
let re = /a{3}/

// 至少3個(gè)a
re = /a{3,}/

// 3~6個(gè)a
re = /a{3,6/

// 多字符匹配:兩次匹配只對(duì)量詞前面的一個(gè)字符生效,比如 /ab{3}/,只會(huì)檢測(cè)b,不會(huì)檢測(cè)ab,如果要檢測(cè)ab,需要使用()
re = /(ab){3}/


//  開(kāi)頭任何個(gè)小寫(xiě)字母
re = /^[a-z]{3}/


// + 表示一個(gè)以上,等同于{1,}
re = /a+/

// *表示任意數(shù)量
re = /a*/

// ?表示0-1次  等同于{0,1}
re = /a?/

9.4正咋表達(dá)式匹配模式

1.默認(rèn)(貪婪模式)

  • 在 JavaScript 正則表達(dá)式中,默認(rèn)情況下量詞(如*、+、?)是貪婪的。這意味著它們會(huì)盡可能多地匹配字符。
  • 例如,對(duì)于正則表達(dá)式/a.*b/和字符串"aabbbc",它會(huì)匹配從第一個(gè)a到最后一個(gè)b的整個(gè)字符串,即"aabbbc"。因?yàn)?code>.*會(huì)盡可能多地匹配中間的字符,直到遇到最后一個(gè)b。

2.非貪婪模式(懶模式)

  • 通過(guò)在量詞后面添加?可以將其轉(zhuǎn)換為非貪婪模式。在非貪婪模式下,量詞會(huì)盡可能少地匹配字符。
  • 例如,對(duì)于正則表達(dá)式/a.*?b/和字符串"aabbbc",它會(huì)匹配"aab"。因?yàn)?code>.*?會(huì)在遇到第一個(gè)b時(shí)就停止匹配,只匹配最少的字符來(lái)滿足表達(dá)式。

3.全局匹配模式(g

  • 當(dāng)在正則表達(dá)式末尾添加g標(biāo)志(如/pattern/g)時(shí),它會(huì)進(jìn)行全局匹配。這意味著會(huì)在整個(gè)字符串中查找所有匹配的部分,而不是只找到第一個(gè)匹配就停止。
  • 例如,對(duì)于正則表達(dá)式/a/g和字符串"aaab",它會(huì)匹配所有的a,返回一個(gè)包含三個(gè)a的數(shù)組(在使用match方法時(shí))。如果沒(méi)有g標(biāo)志,只會(huì)返回第一個(gè)a。

4.不區(qū)分大小寫(xiě)匹配模式(i

  • 在正則表達(dá)式末尾添加i標(biāo)志(如/pattern/i)會(huì)使匹配不區(qū)分大小寫(xiě)。
  • 例如,對(duì)于正則表達(dá)式/a/i和字符串"Aa",它會(huì)匹配A,因?yàn)椴粎^(qū)分大小寫(xiě)。

5.多行匹配模式(m

  • 當(dāng)添加m標(biāo)志(如/pattern/m)時(shí),^$的匹配行為會(huì)發(fā)生改變。^不僅可以匹配字符串開(kāi)頭,還可以匹配每一行的開(kāi)頭;$不僅可以匹配字符串結(jié)尾,還可以匹配每一行的結(jié)尾。
  • 例如,對(duì)于正則表達(dá)式/^a/m和字符串"a\nb",它會(huì)匹配第一行開(kāi)頭的a,如果沒(méi)有m標(biāo)志,它只會(huì)匹配整個(gè)字符串開(kāi)頭的a,對(duì)于這個(gè)例子就不會(huì)匹配

9.5正則表達(dá)式提取

exec()用于獲取字符串中符合正則表達(dá)式的內(nèi)容

let str = "abc123bcc456cbdd"


let re = /\d+/ig


// '123'是本次匹配到的結(jié)果,index是匹配到的字符串在原始輸入字符串中的起始索引位置是 3,input是原始字符串,group是組
console.log(re.exec(str)) // [ '123', index: 3, input: 'abc123bcc456cbdd', groups: undefined ]
console.log(re.exec(str)) // [ '456', index: 9, input: 'abc123bcc456cbdd', groups: undefined ]
// 每調(diào)用一次只會(huì)匹配一次,調(diào)用多次會(huì)依次向后匹配,為null說(shuō)明匹配結(jié)束沒(méi)有了
console.log(re.exec(str)) // null



// 使用()可以進(jìn)行分組

str = "abcadcacc"

// 匹配a*c,使用()把中間的字符分組
re = /a([a-z])c/

// abc是本次匹配到的內(nèi)容,b是分組內(nèi)的內(nèi)容
console.log(re.exec(str)) // [ 'abc', 'b', index: 0, input: 'abcadcacc', groups: undefined ]

9.6字符串的正則方法

let str = "llaacqqabcccaccdd"
// 可以根據(jù)正則表達(dá)式來(lái)對(duì)一個(gè)字符串進(jìn)行拆分

console.log(str.split(/a[a-z]c/)) // [ 'll', 'qq', 'cc', 'dd' ]

// 根據(jù)正則表達(dá)式替換字符串中的指定內(nèi)容
console.log(str.replace(/a[a-z]c/g,"@")) // ll@qq@cc@dd


// 可以去搜索符合正則表達(dá)式的內(nèi)容第一次在字符串中出現(xiàn)的位置
console.log(str.search(/a[a-z]c/)) // 2

// 根據(jù)正則表達(dá)式去匹配字符串中所有符合要求的內(nèi)容
console.log(str.match(/a/g)) // [ 'a', 'a', 'a', 'a' ]


// 根據(jù)正則表達(dá)式去匹配字符串中符合要求的內(nèi)容(必須設(shè)置g 全局匹配),返回的是一個(gè)迭代器
console.log(str.matchAll(/a/g)) // Object [RegExp String Iterator] {}

10.垃圾回收機(jī)制

  • 如果一個(gè)對(duì)象沒(méi)有任何的變量對(duì)其進(jìn)行引用,那么這個(gè)對(duì)象就是一個(gè)垃圾對(duì)象
  • 垃圾對(duì)象的存在,會(huì)嚴(yán)重的影響程序的性能
  • 在JS中有自動(dòng)的垃圾回收機(jī)制,這些垃圾對(duì)象會(huì)被解釋器自動(dòng)回收,我們無(wú)需手動(dòng)處理
  • 對(duì)于垃圾回收來(lái)說(shuō),我們唯一能做的事情就是將不再使用的變量設(shè)置為null
let obj = { value: 1 };
let anotherObj = obj;  // obj的引用次數(shù)增加到2
obj = null;            // obj的引用次數(shù)減少到1
anotherObj = null;     // obj的引用次數(shù)減少到0,可被垃圾收集器回收

以上就是一文詳解JavaScript中內(nèi)建對(duì)象的詳細(xì)內(nèi)容,更多關(guān)于JavaScript內(nèi)建對(duì)象的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序Getuserinfo解決方案圖解

    微信小程序Getuserinfo解決方案圖解

    本文通過(guò)圖文并茂的形式給大家介紹了微信小程序Getuserinfo解決方案,需要的朋友可以參考下
    2018-08-08
  • js中的數(shù)組Array定義與sort方法使用示例

    js中的數(shù)組Array定義與sort方法使用示例

    Array定義與sort方法在使用過(guò)程中還是比較常見(jiàn)的,下面為大家介紹下Array的定義及sort方法使用示例
    2013-08-08
  • JavaScript new對(duì)象的四個(gè)過(guò)程實(shí)例淺析

    JavaScript new對(duì)象的四個(gè)過(guò)程實(shí)例淺析

    這篇文章主要介紹了JavaScript new對(duì)象的四個(gè)過(guò)程,結(jié)合實(shí)例形式簡(jiǎn)單分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)中new對(duì)象的四個(gè)過(guò)程相關(guān)原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-07-07
  • 利用js動(dòng)態(tài)添加刪除table行的示例代碼

    利用js動(dòng)態(tài)添加刪除table行的示例代碼

    本篇文章主要是對(duì)利用js動(dòng)態(tài)添加刪除table行的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 使用selenium抓取淘寶的商品信息實(shí)例

    使用selenium抓取淘寶的商品信息實(shí)例

    下面小編就為大家分享一篇使用selenium抓取淘寶的商品信息實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • js獲取頁(yè)面description的方法

    js獲取頁(yè)面description的方法

    這篇文章主要介紹了js獲取頁(yè)面description的方法,涉及javascript操作頁(yè)面元素的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Webpack中SplitChunksPlugin 配置參數(shù)詳解

    Webpack中SplitChunksPlugin 配置參數(shù)詳解

    這篇文章主要介紹了Webpack中SplitChunksPlugin 配置參數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 小程序Request的另類用法詳解

    小程序Request的另類用法詳解

    這篇文章主要介紹了小程序Request的另類用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • JavaScript 九種跨域方式實(shí)現(xiàn)原理

    JavaScript 九種跨域方式實(shí)現(xiàn)原理

    這篇文章主要介紹了JavaScript 九種跨域方式實(shí)現(xiàn)原理,什么是跨域,以及有哪幾種跨域方式,這是本文要探討的內(nèi)容。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • js復(fù)制文本到粘貼板(Clipboard.writeText())

    js復(fù)制文本到粘貼板(Clipboard.writeText())

    這篇文章主要介紹了js復(fù)制文本到粘貼板(Clipboard.writeText()),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論