javascript標(biāo)準(zhǔn)庫(js的標(biāo)準(zhǔn)內(nèi)置對象)總結(jié)
值屬性
這部分屬性只是簡單的值,它們沒有自己的屬性和方法。
Infinity
全局屬性 Infinity 是一個(gè)數(shù)值,表示無窮大。
NaN
全局屬性 NaN 的值表示不是一個(gè)數(shù)字(Not-A-Number)。
undefined
全局屬性undefined表示原始值undefined。它是一個(gè)JavaScript的 原始數(shù)據(jù)類型 。
null
值 null 特指對象的值未設(shè)置。它是 JavaScript 基本類型 之一。
函數(shù)屬性
全局函數(shù)可以直接調(diào)用,不需要在調(diào)用時(shí)指定所屬對象,執(zhí)行結(jié)束后會(huì)將結(jié)果直接返回給調(diào)用者。
eval(str)
eval() 函數(shù)會(huì)將傳入的字符串當(dāng)做 JavaScript 代碼進(jìn)行執(zhí)行。
PS:eval會(huì)造成安全和性能方面的問題,具體參見避免在不必要的情況下使用 eval。
isFinite(arg)
判斷被傳入的值(非number類型將轉(zhuǎn)換為number類型)是否為有限值。
isNaN()
判斷被傳入的值(非number類型將轉(zhuǎn)換為number類型)是否為NaN。
PS:使用Number.isNaN()來代替更有語義性。
parseFloat(str)
parseFloat() 函數(shù)解析一個(gè)字符串參數(shù)并返回一個(gè)浮點(diǎn)數(shù)。
PS:如果在解析過程中遇到了正負(fù)號(+或-),數(shù)字(0-9),小數(shù)點(diǎn),或者科學(xué)記數(shù)法中的指數(shù)(e或E)以外的字符,則它會(huì)忽略該字符以及之后的所有字符,返回當(dāng)前已經(jīng)解析到的浮點(diǎn)數(shù).同時(shí)參數(shù)字符串首位的空白符會(huì)被忽略.
如果第一個(gè)字符不能解析,直接返回NaN。
parseInt(str, radix);
parseInt() 函數(shù)解析一個(gè)字符串參數(shù),并返回一個(gè)指定基數(shù)的整數(shù) (數(shù)學(xué)系統(tǒng)的基礎(chǔ))。
PS:radix一個(gè)介于2和36之間的整數(shù),表示上述字符串的基數(shù)(默認(rèn)為10)。
encodeURI(URI)
函數(shù)通過將特定字符的每個(gè)實(shí)例替換為一個(gè)、兩個(gè)、三或四轉(zhuǎn)義序列來對統(tǒng)一資源標(biāo)識符 (URI) 進(jìn)行編碼 (該字符的 UTF-8 編碼僅為四轉(zhuǎn)義序列)由兩個(gè) “代理” 字符組成)。
PS:encodeURI 字母、數(shù)字、;、,、/、?、:、@、&、=、+、$、-、_、.、!、~、*、'、(、)、#、之外的所有字符。
decodeURI(encodeURI)
decodeURI() 函數(shù)解碼一個(gè)由encodeURI 先前創(chuàng)建的統(tǒng)一資源標(biāo)識符(URI)或類似的例程。
encodeURIComponent(str)
encodeURIComponent()是對統(tǒng)一資源標(biāo)識符(URI)的組成部分進(jìn)行編碼的方法。
PS:encodeURIComponent 轉(zhuǎn)義除了字母、數(shù)字、(、)、.、!、~、*、'、-和_之外的所有字符。
為了避免服務(wù)器收到不可預(yù)知的請求,對任何用戶輸入的作為URI部分的內(nèi)容你都需要用encodeURIComponent進(jìn)行轉(zhuǎn)義。
decodeURIComponent(encodedURI)
decodeURIComponent() 方法用于解碼由 encodeURIComponent 方法或者其它類似方法編碼的部分統(tǒng)一資源標(biāo)識符(URI)。
encodeURI和encodeURIComponent的區(qū)別與使用場景
區(qū)別在于編碼的字符范圍不同。
encodeURI使用于編碼整個(gè)URI而encodeURIComponent主要query部分(當(dāng)你需要編碼URL中的參數(shù))。
簡單明了區(qū)分escape、encodeURI和encodeURIComponent
Function
全局的Function對象沒有自己的屬性和方法, 但是, 因?yàn)樗旧硪彩呛瘮?shù),所以它也會(huì)通過原型鏈從Function.prototype上繼承部分屬性和方法。
原型屬性
length
定義:指明函數(shù)的形參個(gè)數(shù)(確定多少個(gè)必須要傳入的參數(shù))區(qū)別于arguments.length實(shí)參個(gè)數(shù)(確定函數(shù)被調(diào)用時(shí)的實(shí)際傳參個(gè)數(shù))。
constructor
定義:返回創(chuàng)建實(shí)例對象的 Object 構(gòu)造函數(shù)的引用。
原型方法
func.apply(thisArg, [argsArray])
定義:調(diào)用一個(gè)函數(shù), 其具有一個(gè)指定的this值,以及作為一個(gè)數(shù)組(或類似數(shù)組的對象)提供的參數(shù)。
參數(shù):thisArg為func函數(shù)執(zhí)行時(shí)this的指向,argsArray為類數(shù)組參數(shù)數(shù)組。
返回:調(diào)用有指定this值和參數(shù)的函數(shù)的結(jié)果。
fun.call(thisArg, arg1, arg2, …)
定義:調(diào)用一個(gè)函數(shù), 其具有一個(gè)指定的this值和分別地提供的參數(shù)(參數(shù)的列表)。
參數(shù):thisArg為func函數(shù)執(zhí)行時(shí)this的指向,arg1, arg2, …為指定的參數(shù)列表。
返回:返回值是你調(diào)用的方法的返回值,若該方法沒有返回值,則返回undefined。
運(yùn)用:1.使用call方法調(diào)用父構(gòu)造函數(shù)(在一個(gè)子構(gòu)造函數(shù)中,你可以通過調(diào)用父構(gòu)造函數(shù)的call方法來實(shí)現(xiàn)繼承)
2.使用call方法調(diào)用匿名函數(shù)3.使用call方法調(diào)用函數(shù)并且指定上下文的'this'
運(yùn)用舉例
fun.bind(thisArg[, arg1[, arg2[, …]]])
定義:調(diào)用一個(gè)函數(shù), 其具有一個(gè)指定的this值,以及作為一個(gè)數(shù)組(或類似數(shù)組的對象)提供的參數(shù)。
參數(shù):thisArg為當(dāng)綁定函數(shù)被調(diào)用時(shí),該參數(shù)會(huì)作為原函數(shù)運(yùn)行時(shí)的 this 指向,arg1、arg2…為當(dāng)綁定函數(shù)被調(diào)用時(shí),這些參數(shù)將置于實(shí)參之前傳遞給被綁定的方法。
返回:由指定的this值和初始化參數(shù)改造的原函數(shù)拷貝(返回一個(gè)函數(shù))。
運(yùn)用:1.創(chuàng)建綁定函數(shù)(顯式綁定this)2.偏函數(shù)(使一個(gè)函數(shù)擁有預(yù)設(shè)的初始參數(shù))。
運(yùn)用舉例
Function.prototype.toString()
定義:返回一個(gè)表示當(dāng)前函數(shù)源代碼的字符串。
參數(shù):null。
返回:表示函數(shù)源代碼的一個(gè)字符串。
Number
JavaScript 的 Number 對象是經(jīng)過封裝的能讓你處理數(shù)字值的對象。
Number(),如果參數(shù)無法被轉(zhuǎn)換為數(shù)字,則返回 NaN。
屬性
Number.EPSILON
兩個(gè)可表示(representable)數(shù)之間的最小間隔,在進(jìn)行計(jì)算時(shí)誤差在這個(gè)范圍內(nèi)被認(rèn)為是合理的。
Number.MAX_SAFE_INTEGER
JavaScript 中最大的安全整數(shù) (2^53 - 1)。
Number.MIN_SAFE_INTEGER
JavaScript 中最小的安全整數(shù) (-(2^53 - 1)).
Number.MAX_VALUE
能表示的最大正數(shù)。最小的負(fù)數(shù)是 -MAX_VALUE。
Number.MIN_VALUE
能表示的最小正數(shù)即最接近 0 的正數(shù) (實(shí)際上不會(huì)變成 0)。最大的負(fù)數(shù)是 -MIN_VALUE。
Number.NaN
Not A Number.
Number.NEGATIVE_INFINITY
特殊的負(fù)無窮大值,在溢出時(shí)返回該值。
Number.POSITIVE_INFINITY
特殊的正無窮大值,在溢出時(shí)返回改值。
方法
下列方法均不會(huì)發(fā)生將String轉(zhuǎn)化為Number的過程。
Number.isNaN(value)
定義:確定傳遞的值是否為 NaN和其類型是 Number。它是用于代替原始的全局isNaN()。
參數(shù):要被檢測是否是 NaN 的值。
返回:一個(gè)布爾值,表示給定的值是否是 NaN。
PS:該方法不同于全局的isNaN(),不會(huì)將字符串轉(zhuǎn)換為數(shù)字。
Number.isFinite(value)
定義:用來檢測傳入的參數(shù)是否是一個(gè)有窮數(shù)(finite number)。
參數(shù):value要被檢測有窮性的值。
返回:一個(gè)布爾值表示給定的值是否是一個(gè)有窮數(shù)。
PS:和全局的 isFinite() 函數(shù)相比,這個(gè)方法不會(huì)強(qiáng)制將一個(gè)非數(shù)值的參數(shù)轉(zhuǎn)換成數(shù)值。
Number.isInteger(value)
定義:用來判斷給定的參數(shù)是否為整數(shù)。
參數(shù):value要判斷此參數(shù)是否為整數(shù)。
返回:判斷給定值是否是整數(shù)的 Boolean 值。
Number.isSafeInteger(testValue)
定義:用來判斷傳入的參數(shù)值是否是一個(gè)“安全整數(shù)”(safe integer)。
參數(shù):testValue需要檢測的參數(shù)。
返回:一個(gè)布爾值 表示給定的值是否是一個(gè)安全整數(shù)(safe integer)。
Number.parseFloat(string)
定義:可以把一個(gè)字符串解析成浮點(diǎn)數(shù)。
參數(shù):string被解析的字符串。
返回:對應(yīng)的浮點(diǎn)數(shù)。
PS:與全局函數(shù) parseFloat()一樣。
Number.parseInt(string[, radix])
定義:可以根據(jù)給定的進(jìn)制數(shù)的一個(gè)字符串?dāng)?shù)解析成整數(shù)。
參數(shù):string要解析的值,radix一個(gè)介于2和36之間的整數(shù)(數(shù)學(xué)系統(tǒng)的基礎(chǔ)),表示上述字符串的基數(shù)。
實(shí)例方法
下列方法均返回為字符串。
numObj.toExponential([fractionDigits])
定義:以指數(shù)表示法返回該數(shù)值字符串表示形式。
參數(shù):fractionDigits一個(gè)整數(shù),用來指定小數(shù)點(diǎn)后有幾位數(shù)字。
返回:一個(gè)用冪的形式 (科學(xué)記數(shù)法) 來表示Number 對象的字符串。
numObj.toFixed(digits)
定義:使用定點(diǎn)表示法來格式化一個(gè)數(shù)。
參數(shù):digits小數(shù)點(diǎn)后數(shù)字的個(gè)數(shù)。
返回:所給數(shù)值的定點(diǎn)數(shù)表示法的字符串形式。
numObj.toPrecision(precision)
定義:以指定的精度返回該數(shù)值對象的字符串表示。
參數(shù):precision一個(gè)用來指定有效數(shù)個(gè)數(shù)的整數(shù)。
返回:以定點(diǎn)表示法或指數(shù)表示法表示的一個(gè)數(shù)值對象的字符串表示。
numObj.toLocaleString([locales [, options]])
定義:返回這個(gè)數(shù)字在特定語言環(huán)境下的表示字符串。
參數(shù):locales為指定本地要使用的編號系統(tǒng),options為有下列屬性(localeMatcher、style、currency等等但存在一定的兼容性)
返回:返回一個(gè)語言環(huán)境下的表示字符串。
PS:通常用于格式化為某種貨幣形式。
numObj.toString([radix])
定義:返回指定 Number 對象的字符串表示形式。
參數(shù):radix指定要用于數(shù)字到字符串的轉(zhuǎn)換的基數(shù)(從2到36)。
返回:轉(zhuǎn)換后的字符串。
numObj.valueOf()
定義:返回一個(gè)被 Number 對象包裝的原始值。
返回:表示指定 Number 對象的原始值的數(shù)字。
String
靜態(tài)方法
String.fromCharCode(num1, …, numN)
定義:返回使用指定的Unicode值序列創(chuàng)建的字符串。
String.fromCodePoint(num1[, …[, numN]])
定義:返回使用指定的代碼點(diǎn)序列創(chuàng)建的字符串,但是這個(gè)方法不能識別 32 位的 UTF-16 字符(Unicode 編號大于0xFFFF)。
String.raw(callSite, …substitutions) || String.rawtemplateString
是用來獲取一個(gè)模板字符串的原始字面量值的。
實(shí)例屬性
length
返回:字符串的長度。
N
返回:第N個(gè)字符串,但不能更改。
實(shí)例方法
str.charAt(index)
定義:從一個(gè)字符串中返回指定index的字符,缺省參數(shù)為0。
str.charCodeAt(index)
定義:返回給定索引處字符的 UTF-16 代碼單元值的數(shù)字;如果索引超出范圍,則返回 NaN。
str.codePointAt(index)
定義:返回 一個(gè) Unicode 編碼點(diǎn)值的非負(fù)整數(shù)。
str.concat(string2, string3[, …, stringN])
定義:將一個(gè)或多個(gè)字符串與原字符串連接合并,形成一個(gè)新的字符串并返回。
str.includes(searchString[, index])
定義:判斷一個(gè)字符串是否包含在另一個(gè)字符串中,根據(jù)情況返回true或false。
str.startsWith(searchString [, index])
定義:用來判斷當(dāng)前字符串是否是以另外一個(gè)給定的子字符串“開頭”的,根據(jù)判斷結(jié)果返回 true 或 false。
str.endsWith(searchString [, index]);
定義:判斷當(dāng)前字符串是否是以另外一個(gè)給定的子字符串“結(jié)尾”的,根據(jù)判斷結(jié)果返回 true 或 false。
str.indexOf(searchValue[, index])
定義:第一次出現(xiàn)的指定值的索引,開始在Index進(jìn)行搜索,否則返回-1。
str.lastIndexOf(searchValue[, index])
定義:返回指定值在調(diào)用該方法的字符串中最后出現(xiàn)的位置,如果沒找到則返回 -1。
str.localeCompare(compareString[, locales[, options]])
定義:localeCompare() 方法返回一個(gè)數(shù)字來指示一個(gè)參考字符串是否在排序順序前面或之后或與給定字符串相同。
str.match(regexp);
定義:當(dāng)一個(gè)字符串與一個(gè)正則表達(dá)式匹配時(shí), match()方法檢索匹配項(xiàng)。
str.normalize([form]);
定義:會(huì)按照指定的一種 Unicode 正規(guī)形式將當(dāng)前字符串正規(guī)化。
str.padStart(targetLength [, padString])
定義:會(huì)用一個(gè)字符串填充在當(dāng)前字符串之前(如果需要的話則重復(fù)填充),返回填充后達(dá)到指定長度的字符串。
str.padEnd(targetLength [, padString])
定義:會(huì)用一個(gè)字符串填充在當(dāng)前字符串之后(如果需要的話則重復(fù)填充),返回填充后達(dá)到指定長度的字符串。
str.repeat(count);
定義:返回一個(gè)新字符串,該字符串包含被連接在一起的指定數(shù)量的字符串的副本。
PS:參數(shù)從零開始。
str.replace(regexp|substr, newSubStr|function)
定義:返回一個(gè)由替換值替換一些或所有匹配的模式后的新字符串。
如果第一個(gè)參數(shù)為regexp第二個(gè)參數(shù)為function時(shí),該函數(shù)參數(shù)說明
參數(shù)1:匹配模式的字符串。
參數(shù)2–:子表達(dá)是匹配的子字符串(就是捕獲分組)。
倒數(shù)參數(shù)2:聲明匹配在string中出現(xiàn)的位置。
倒數(shù)參數(shù)1:進(jìn)行匹配的sting本身。
str.search(regexp)
定義:行正則表達(dá)式和 String對象之間的一個(gè)搜索匹配。
返回:如果匹配成功,則 search() 返回正則表達(dá)式在字符串中首次匹配項(xiàng)的索引。否則,返回 -1。
str.slice(beginSlice[, endSlice])
定義:提取一個(gè)字符串的一部分,并返回一新的字符串。
參數(shù):beginSlice從該索引(以 0 為基數(shù))處開始提取原字符串中的字符。如果值為負(fù)數(shù),會(huì)被當(dāng)做 sourceLength + beginSlice 看待,這里的sourceLength 是字符串的長度。
endSlice在該索引(以 0 為基數(shù))處結(jié)束提取字符串,同樣可為負(fù)數(shù)。
str.split([separator[, limit]])
定義:使用指定的分隔符字符串將一個(gè)String對象分割成字符串?dāng)?shù)組,以將字符串分隔為子字符串,以確定每個(gè)拆分的位置。
str.substr(start[, length])
定義:返回一個(gè)字符串中從指定位置開始到指定字符數(shù)的字符。
PS:start >=str.length 或 length <= 0 返回空字符串;start < 0 則轉(zhuǎn)換為start + str.length。
str.substring(indexStart[, indexEnd])
定義:返回一個(gè)字符串在開始索引到結(jié)束索引之間的一個(gè)子集, 或從開始索引直到字符串的末尾的一個(gè)子集。
PS:一些特殊情況。
如果 indexStart 等于 indexEnd,substring 返回一個(gè)空字符串。
如果省略 indexEnd,substring 提取字符一直到字符串末尾。
如果任一參數(shù)小于 0 或?yàn)?NaN,則被當(dāng)作 0。
如果任一參數(shù)大于 stringName.length,則被當(dāng)作 stringName.length。
如果 indexStart 大于 indexEnd,則 substring 的執(zhí)行效果就像兩個(gè)參數(shù)調(diào)換了一樣。
str.toLowerCase()
定義:將調(diào)用該方法的字符串值轉(zhuǎn)為小寫形式,并返回新字符串。
str.toUpperCase()
定義:將調(diào)用該方法的字符串值轉(zhuǎn)換為大寫形式,并返回新字符串。
str.toLocaleLowerCase()
定義:根據(jù)任何特定于語言環(huán)境的案例映射,返回調(diào)用字符串值轉(zhuǎn)換為小寫的值。
PS:在大多數(shù)情況下,該方法產(chǎn)生的結(jié)果和調(diào)用toLowerCase()的結(jié)果相同(除土耳其等)。
str.toLocaleUpperCase()
定義:使用本地化(locale-specific)的大小寫映射規(guī)則將輸入的字符串轉(zhuǎn)化成大寫形式并返回結(jié)果字符串。
str.toString()
定義:返回指定對象的字符串形式。
str.trim()
定義:會(huì)從一個(gè)字符串的兩端刪除空白字符,返回一個(gè)新的字符串。
PS:str.trimLeft() 和 str.trimRight() 不是標(biāo)準(zhǔn)方法。
string[Symbol.iterator]
返回一個(gè)新的Iterator對象,它遍歷字符串的代碼點(diǎn),返回每一個(gè)代碼點(diǎn)的字符串值。
PS:下列內(nèi)置類型擁有默認(rèn)迭代器行為Array、String、Set、Map等,而Object沒有。
Array
靜態(tài)方法
在 ES2015 中, Class 語法允許我們?yōu)閮?nèi)置類型(比如 Array)和自定義類新建子類(比如叫 SubArray)。這些子類也會(huì)繼承父類的靜態(tài)方法,比如 SubArray.from(),調(diào)用該方法后會(huì)返回子類 SubArray 的一個(gè)實(shí)例,而不是 Array 的實(shí)例。
Array.from(arrayLike[, mapFn[, thisArg]])
定義:從一個(gè)類似數(shù)組或可迭代對象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例。
參數(shù):
arrayLike想要轉(zhuǎn)換成數(shù)組的偽數(shù)組對象或可迭代對象。
mapFn (可選參數(shù))如果指定了該參數(shù),新數(shù)組中的每個(gè)元素會(huì)執(zhí)行該回調(diào)函數(shù)。
thisArg (可選參數(shù))可選參數(shù),執(zhí)行回調(diào)函數(shù) mapFn 時(shí) this 對象。
返回:一個(gè)新的數(shù)組。
PS:Array.from(obj, mapFn, thisArg) 就相當(dāng)于 Array.from(obj).map(mapFn, thisArg),ES6之前的做法:Array.prototype.slice.call(arrayLike)。
Array.isArray(obj)
定義:確定傳遞的值是否是一個(gè) Array。
返回:boolean。
PS:ES6之前的做法Object.prototype.toString.call(arg) === ‘[object Array]'。
Array.of(element0[, element1[, …[, elementN]]])
定義:創(chuàng)建一個(gè)具有可變數(shù)量參數(shù)的新數(shù)組實(shí)例,而不考慮參數(shù)的數(shù)量或類型。
參數(shù):任意個(gè)參數(shù),將按順序成為返回?cái)?shù)組中的元素。
返回:參數(shù)列表組成的數(shù)組。
PS:Array.of() 和 Array 構(gòu)造函數(shù)之間的區(qū)別在于處理整數(shù)參數(shù):Array.of(7) 創(chuàng)建一個(gè)具有單個(gè)元素 7 的數(shù)組,而 Array(7) 創(chuàng)建一個(gè)包含 7 個(gè) undefined 元素的數(shù)組。
實(shí)例方法及屬性
ary.length
返回:讀寫數(shù)組的長度。
修改器方法(改變原數(shù)組)
arr.copyWithin(target[, start[, end]])
定義:淺復(fù)制數(shù)組的一部分到同一數(shù)組中的另一個(gè)位置,并返回它,而不修改其大小。
參數(shù):
target 0 為基底的索引,復(fù)制序列到該位置。如果是負(fù)數(shù),target 將從末尾開始計(jì)算。如果 target 大于等于 arr.length,將會(huì)不發(fā)生拷貝。如果 target 在 start 之后,復(fù)制的序列將被修改以符合 arr.length。
start 0 為基底的索引,開始復(fù)制元素的起始位置。如果是負(fù)數(shù),start 將從末尾開始計(jì)算。如果 start 被忽略,copyWithin 將會(huì)從0開始復(fù)制。
end 0 為基底的索引,開始復(fù)制元素的結(jié)束位置。copyWithin 將會(huì)拷貝到該位置,但不包括 end 這個(gè)位置的元素。如果是負(fù)數(shù), end 將從末尾開始計(jì)算。如果 end 被忽略,copyWithin 將會(huì)復(fù)制到 arr.length。
返回值:操作原數(shù)組。
arr.fill(value[, start[, end]])
定義:用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素。
參數(shù):
value 用來填充數(shù)組元素的值。
start 開始索引,默認(rèn)為0。
end 結(jié)束索引,默認(rèn)為arr.length(不包括)。
返回:修改后的數(shù)組。
arr.push(element1, …, elementN)
定義:將一個(gè)或多個(gè)元素添加到數(shù)組的末尾,并返回新數(shù)組的長度。
參數(shù):
elementN 被添加到數(shù)組末尾的元素。
返回:操作后的數(shù)組的長度。
arr.pop()
定義:從數(shù)組中刪除最后一個(gè)元素,并返回該元素的值。此方法更改數(shù)組的長度。
返回:從數(shù)組中刪除的元素(當(dāng)數(shù)組為空時(shí)返回undefined)。
arr.reverse()
定義:將數(shù)組中元素的位置顛倒。
返回:顛倒數(shù)組中元素的位置,并返回該數(shù)組的引用。
arr.sort(compareFunction)
定義:可以根據(jù)指定方法對數(shù)組進(jìn)行排序。
compareFunction 可選。用來指定按某種順序進(jìn)行排列的函數(shù)。如果省略,元素按照轉(zhuǎn)換為的字符串的各個(gè)字符的Unicode位點(diǎn)進(jìn)行排序。
返回:返回排序后的數(shù)組。原數(shù)組已經(jīng)被排序后的數(shù)組代替。
arr.shift()
定義:從數(shù)組中刪除第一個(gè)元素,并返回該元素的值。此方法更改數(shù)組的長度。
返回:從數(shù)組中刪除的元素; 如果數(shù)組為空則返回undefined。
arr.unshift(element1, …, elementN)
定義:將一個(gè)或多個(gè)元素添加到數(shù)組的開頭,并返回新數(shù)組的長度。
參數(shù):element1, …, elementN 要添加到數(shù)組開頭的元素。
返回:當(dāng)一個(gè)對象調(diào)用該方法時(shí),返回其 length 屬性值。
array.splice(start, [deleteCount], [item1], [item2], …)
定義:通過刪除現(xiàn)有元素和/或添加新元素來更改一個(gè)數(shù)組的內(nèi)容。
參數(shù):
start 開始修改的位置。
deleteCount 移除數(shù)組元素的個(gè)數(shù)。
item1、item2…為添加的元素。
返回:由被刪除的元素組成的一個(gè)數(shù)組。如果只刪除了一個(gè)元素,則返回只包含一個(gè)元素的數(shù)組。如果沒有刪除元素,則返回空數(shù)組。
訪問方法(不直接操作原理的數(shù)組)
old_array.concat(value1[, value2[, …[, valueN]]])
定義:用于合并兩個(gè)或多個(gè)數(shù)組。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。
參數(shù):valueN 將數(shù)組和/或值連接成新數(shù)組。
返回:新數(shù)組。
arr.includes(searchElement, [fromIndex])
定義:用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值,根據(jù)情況,如果包含則返回 true,否則返回false。
參數(shù):
searchElement 需要查找的元素值。
fromIndex 從該索引處開始查找 searchElement。
返回:boolean。
arr.join([separator])
定義:將一個(gè)數(shù)組(或一個(gè)類數(shù)組對象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串。
參數(shù):
searchElement 需要查找的元素值。
fromIndex 從該索引處開始查找 searchElement。
返回:string。
arr.slice([begin], [end])
定義:返回一個(gè)從開始到結(jié)束(不包括結(jié)束)選擇的數(shù)組的一部分淺拷貝到一個(gè)新數(shù)組對象。
返回:一個(gè)含有提取元素的新數(shù)組。
arr.indexOf(searchElement[, fromIndex = 0])
定義:返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引,如果不存在,則返回-1。
返回:首個(gè)被找到的元素在數(shù)組中的索引位置; 若沒有找到則返回 -1。
arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])
定義:返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引,如果不存在,則返回-1。
返回:數(shù)組中最后一個(gè)元素的索引,如未找到返回-1。
arr.toString()
定義:返回一個(gè)字符串,表示指定的數(shù)組及其元素。
返回:逗號分隔的字符串。
迭代方法
array.forEach(callback(currentValue, index, array){ //do something}, this)
定義:對數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)。
返回:undefined。
PS:沒有辦法中止或者跳出 forEach 循環(huán),需要跳出請使用循環(huán)代替。
已刪除(使用delete方法等情況)或者未初始化的項(xiàng)將被跳過(但不會(huì)跳過那些值為 undefined、null 的項(xiàng))。
array.map(callback(currentValue, index, array){ //do something}, this)
定義:創(chuàng)建一個(gè)新數(shù)組,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果。
返回:一個(gè)新數(shù)組,每個(gè)元素都是回調(diào)函數(shù)的結(jié)果。
arr.keys()
定義:返回一個(gè)新的Array迭代器,它包含數(shù)組中每個(gè)索引的鍵。
返回:一個(gè)新的 Array 迭代器對象。
arr.values()
定義:返回一個(gè)新的 Array Iterator 對象,該對象包含數(shù)組每個(gè)索引的值。
返回:一個(gè)新的 Array 迭代器對象。
arr.entries()
定義:返回一個(gè)新的Array Iterator對象,該對象包含數(shù)組中每個(gè)索引的鍵/值對。
返回:一個(gè)新的 Array 迭代器對象。
arr.every(callback[, thisArg])
定義:測試數(shù)組的所有元素是否都通過了指定函數(shù)的測試。
返回:boolean。
arr.some(callback[, thisArg])
定義:測試數(shù)組中的某些元素是否通過由提供的函數(shù)實(shí)現(xiàn)的測試。
返回:boolean。
arr.filter(callback[, thisArg])
定義:創(chuàng)建一個(gè)新數(shù)組, 其包含通過所提供函數(shù)實(shí)現(xiàn)的測試的所有元素。
返回:新數(shù)組。
arr.findIndex(callback[, thisArg])
定義:返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的索引。否則返回-1。
返回:當(dāng)某個(gè)元素通過 callback 的測試時(shí),返回?cái)?shù)組中的一個(gè)值的索引,否則返回 -1。
arr.find(callback[, thisArg])
定義:返回?cái)?shù)組中滿足提供的測試函數(shù)的第一個(gè)元素的值。否則返回 undefined。
返回:當(dāng)某個(gè)元素通過 callback 的測試時(shí),返回?cái)?shù)組中的一個(gè)值,否則返回 undefined。
arr.reduce(callback[, initialValue])
定義:對累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù),將其減少為單個(gè)值。
參數(shù):
callback 執(zhí)行數(shù)組中每個(gè)值的函數(shù),包含四個(gè)參數(shù):
accumulato 累加器累加回調(diào)的返回值; 它是上一次調(diào)用回調(diào)時(shí)返回的累積值,或initialValue(如下所示)。
currentValue 數(shù)組中正在處理的元素。
currentIndex可選 數(shù)組中正在處理的當(dāng)前元素的索引。 如果提供了initialValue,則索引號為0,否則為索引為1。
array可選 調(diào)用reduce的數(shù)組。
initialValue 可選用作第一個(gè)調(diào)用 callback的第一個(gè)參數(shù)的值。 如果沒有提供初始值,則將使用數(shù)組中的第一個(gè)元素。 在沒有初始值的空數(shù)組上調(diào)用 reduce 將報(bào)錯(cuò)。
返回:函數(shù)累計(jì)處理的結(jié)果。
arr.reduceRight(callback[, initialValue])
定義:接受一個(gè)函數(shù)作為累加器(accumulator)和數(shù)組的每個(gè)值(從右到左)將其減少為單個(gè)值。
arrSymbol.iterator
定義:默認(rèn)為數(shù)組不說了迭代器,@@iterator 屬性和 values() 屬性的初始值均為同一個(gè)函數(shù)對象。
返回:數(shù)組的 iterator 方法,默認(rèn)情況下與 values() 返回值相同。
arr.flatten(depth)
定義:會(huì)遞歸到指定深度將所有子數(shù)組連接,并返回一個(gè)新數(shù)組。
參數(shù):depth 可選指定嵌套數(shù)組中的結(jié)構(gòu)深度,默認(rèn)值為1。
返回:一個(gè)將子數(shù)組連接的新數(shù)組。
arr.flatMap(function callback(currentValue[, index[, array]]) { // 返回新數(shù)組的元素}[, thisArg])
定義:首先使用映射函數(shù)映射每個(gè)元素,然后將結(jié)果壓縮成一個(gè)新數(shù)組。它與 map 和 深度值1的 flatten 幾乎相同,但flatMap通常在合并成一種方法的效率稍微高一些。
返回:一個(gè)新的數(shù)組,其中每個(gè)元素都是回調(diào)函數(shù)的結(jié)果,并且結(jié)構(gòu)深度 depth 值為1。
Proxy && Reflect
Proxy是一個(gè)構(gòu)造函數(shù)(對對象的訪問進(jìn)行攔截),Reflect(操作對象提供的API)。
Reflect它與Proxy對象的方法是一一對應(yīng)的,這就讓Proxy對象可以方便地調(diào)用對應(yīng)的Reflect方法,完成默認(rèn)行為,作為修改行為的基礎(chǔ)。
Proxy
Proxy 用于修改某些操作的默認(rèn)行為,等同于在語言層面做出修改,所以屬于一種“元編程”(meta programming),即對編程語言進(jìn)行編程。
Proxy 可以理解成,在目標(biāo)對象之前架設(shè)一層“攔截”,外界對該對象的訪問,都必須先通過這層攔截,因此提供了一種機(jī)制,可以對外界的訪問進(jìn)行過濾和改寫。
Proxy方法:target參數(shù)表示所要攔截的目標(biāo)對象,handler參數(shù)也是一個(gè)對象,用來定制攔截行為 var proxy = new Proxy(target, handler); var person = { name: "張三" }; var proxy = new Proxy(person, { get: function(target, property) { if (property in target) { return target[property]; } else { throw new ReferenceError("Property \"" + property + "\" does not exist."); } } }); proxy.name // "張三" proxy.age // 拋出一個(gè)錯(cuò)誤
Reflect
將Object對象的一些明顯屬于語言內(nèi)部的方法(比如Object.defineProperty),放到Reflect對象上?,F(xiàn)階段,某些方法同時(shí)在Object和Reflect對象上部署,未來的新方法將只部署在Reflect對象上。也就是說,從Reflect對象上可以拿到語言內(nèi)部的方法。
// 下列方法說明:target為目標(biāo)對象,name為某個(gè)屬性,receiver為如果name屬性設(shè)置了賦值函數(shù),則為函數(shù)的this指向
Reflect.apply(target, thisArg, args)
Reflect.apply方法等同于Function.prototype.apply.call(func, thisArg, args),用于綁定this對象后執(zhí)行給定函數(shù)。
Reflect.construct(target, args)
Reflect.construct方法等同于new target(…args),這提供了一種不使用new,來調(diào)用構(gòu)造函數(shù)的方法。
Reflect.get(target, name, receiver)
Reflect.get方法查找并返回target對象的name屬性,如果沒有該屬性,則返回undefined。
Reflect.set(target, name, value, receiver)
Reflect.set方法設(shè)置target對象的name屬性等于value。
Reflect.defineProperty(target, name, desc)
Reflect.defineProperty方法基本等同于Object.defineProperty,用來為對象定義屬性。未來,后者會(huì)被逐漸廢除,請從現(xiàn)在開始就使用Reflect.defineProperty代替它。
Reflect.deleteProperty(target, name)
Reflect.deleteProperty方法等同于delete obj[name],用于刪除對象的屬性。
Reflect.has(target, name)
Reflect.has方法對應(yīng)name in obj里面的in運(yùn)算符。
Reflect.ownKeys(target)
Reflect.ownKeys方法用于返回對象的所有屬性,基本等同于Object.getOwnPropertyNames與Object.getOwnPropertySymbols之和。
Reflect.isExtensible(target)
Reflect.isExtensible方法對應(yīng)Object.isExtensible,返回一個(gè)布爾值,表示當(dāng)前對象是否可擴(kuò)展。
Reflect.preventExtensions(target)
Reflect.preventExtensions對應(yīng)Object.preventExtensions方法,用于讓一個(gè)對象變?yōu)椴豢蓴U(kuò)展。它返回一個(gè)布爾值,表示是否操作成功。
Reflect.getOwnPropertyDescriptor(target, name)
Reflect.getOwnPropertyDescriptor基本等同于Object.getOwnPropertyDescriptor,用于得到指定屬性的描述對象,將來會(huì)替代掉后者。
Reflect.getPrototypeOf(target)
Reflect.getPrototypeOf方法用于讀取對象的proto屬性,對應(yīng)Object.getPrototypeOf(obj)。
Reflect.setPrototypeOf(target, prototype)
Reflect.setPrototypeOf方法用于設(shè)置對象的proto屬性,返回第一個(gè)參數(shù)對象,對應(yīng)Object.setPrototypeOf(obj, newProto)。
Event
Event接口表示在DOM中發(fā)生的任何事件; 一些是用戶生成的(例如鼠標(biāo)或鍵盤事件),而其他由API生成(例如指示動(dòng)畫已經(jīng)完成運(yùn)行的事件,視頻已被暫停等等)。有許多類型的事件,其中一些使用基于主要事件接口的其他接口。事件本身包含所有事件通用的屬性和方法。
屬性
bubbles(只讀)
定義:用來表示該事件是否在DOM中冒泡的boolean值。
cancelBubble(廢棄)
定義:獲取或設(shè)置當(dāng)前事件是否要取消冒泡(使用e.stopPropagation()代替)。
cancelable(只讀)
定義:表示這個(gè)事件是否可以取消默認(rèn)行為(阻止默認(rèn)行為e.preventDefault())。
composed(只讀)
定義:表示該事件是否可以Shadow DOM 傳遞到一般的 DOM。
currentTarget(只讀)
定義:當(dāng)前注冊事件的對象的引用,這個(gè)值會(huì)在傳遞途中發(fā)生變化。
deepPath
定義:返回事件冒泡過程所有經(jīng)過的節(jié)點(diǎn)所構(gòu)成的Array數(shù)組。
defaultPrevented(只讀)
定義:返回是否已經(jīng)調(diào)用了e.preventDefault()來阻止默認(rèn)行為。
eventPhase(只讀)
定義:返回事件流正在哪個(gè)階段。
returnValue(廢棄)
定義:獲取或設(shè)置事件的默認(rèn)操作是否已被阻止。
target(只讀)
定義:返回一個(gè)觸發(fā)事件的對象的引用(ie的srcElement)。
timeStamp(只讀)
定義:事件創(chuàng)建時(shí)的時(shí)間戳,毫秒級別。
type(只讀)
定義:返回一個(gè)字符串(不區(qū)分大小寫), 表示該事件對象的事件類型。
isTrusted(只讀)
定義:指明事件是否是由瀏覽器(當(dāng)用戶點(diǎn)擊實(shí)例后)或者由腳本(使用事件的創(chuàng)建方法,例如event.initEvent)啟動(dòng)。
target與currentTarget的區(qū)別
event.target返回觸發(fā)事件的元素
event.currentTarget返回綁定事件的元素
event對象中 target和currentTarget 屬性的區(qū)別
方法
document.createEvent(“UIEvents”)
創(chuàng)建一個(gè)新的事件(Event),隨之必須調(diào)用自身的 init 方法進(jìn)行初始化。
event.initEvent(type, bubbles, cancelable)
定義:Event.initEvent() 方法可以用來初始化由Document.createEvent() 創(chuàng)建的 event 實(shí)例,且在觸發(fā)之前event.dispatchEvent()。
event.preventDefault()
定義:如果此事件沒有需要顯式處理,那么它默認(rèn)的動(dòng)作也不要做(因?yàn)槟J(rèn)是要做的)。
event.stopPropagation()
定義:阻止捕獲和冒泡階段中當(dāng)前事件的進(jìn)一步傳播(只阻止當(dāng)前偵聽器)。
event.stopImmediatePropagation()
定義:阻止調(diào)用相同事件的其他偵聽器。
- JavaScript對象內(nèi)置對象,值類型和引用類型講解
- jsp的九大內(nèi)置對象深入講解
- JavaScript內(nèi)置對象之Array的使用小結(jié)
- JS內(nèi)置對象和Math對象知識點(diǎn)詳解
- Javascript 類型轉(zhuǎn)換、封閉函數(shù)及常見內(nèi)置對象操作示例
- JavaScript常用內(nèi)置對象用法分析
- JavaScript封閉函數(shù)及常用內(nèi)置對象示例
- 詳解JSP 內(nèi)置對象request常見用法
- jsp內(nèi)置對象
- 詳解JavaScript的內(nèi)置對象
- javascript 內(nèi)置對象及常見API詳細(xì)介紹
- Javascript基礎(chǔ)知識中關(guān)于內(nèi)置對象的知識
相關(guān)文章
Javascript基礎(chǔ)知識(一)核心基礎(chǔ)語法與事件模型
這篇文章主要介紹了Javascript用途及語法,傳統(tǒng)事件及現(xiàn)代事件,是最近這段時(shí)間個(gè)人學(xué)習(xí)javascript的一些心得,分享給大家,有需要的朋友可以參考下2014-09-09Javascript WebSocket使用實(shí)例介紹(簡明入門教程)
網(wǎng)絡(luò)套接字是下一代WEB應(yīng)用程序雙向通信技術(shù),它是基于一個(gè)獨(dú)立的socket并且需要客戶端瀏覽器支持HTML52014-04-04JavaSacript中charCodeAt()方法的使用詳解
這篇文章主要介紹了JavaSacript中charCodeAt()方法的使用詳解,是JS入門學(xué)習(xí)中的基本知識,需要的朋友可以參考下2015-06-06