es5--標(biāo)準(zhǔn)庫 Ⅱ

Array對(duì)象

Array是 JavaScript 的原生對(duì)象,同時(shí)也是一個(gè)構(gòu)造函數(shù)吠撮,可以用它生成新的數(shù)組隅很。Array構(gòu)造函數(shù)有一個(gè)很大的缺陷忽冻,就是不同的參數(shù)遗遵,會(huì)導(dǎo)致它的行為不一致瘦材。所以不推薦用構(gòu)造函數(shù)來生成新數(shù)組尸疆,而是直接使用數(shù)組字面量來生成新數(shù)組臼膏。

var arr = new Array(2);
arr // [ empty x 2 ];

// 無參數(shù)時(shí)硼被,返回一個(gè)空數(shù)組
new Array() // []

// 單個(gè)正整數(shù)參數(shù),表示返回的新數(shù)組的長(zhǎng)度
new Array(1) // [ empty ]
new Array(2) // [ empty x 2 ]

// 非正整數(shù)的數(shù)值作為參數(shù)渗磅,會(huì)報(bào)錯(cuò)
new Array(3.2) // RangeError: Invalid array length
new Array(-3) // RangeError: Invalid array length

// 單個(gè)非數(shù)值(比如字符串嚷硫、布爾值、對(duì)象等)作為參數(shù)始鱼,
// 則該參數(shù)是返回的新數(shù)組的成員
new Array('abc') // ['abc']
new Array([1]) // [Array[1]]

// 多參數(shù)時(shí)仔掸,所有參數(shù)都是返回的新數(shù)組的成員
new Array(1, 2) // [1, 2]
new Array('a', 'b', 'c') // ['a', 'b', 'c']

//字面量方式
var arr = [1, 2];
Array的靜態(tài)方法和實(shí)例方法
  • Array.isArray()方法返回一個(gè)布爾值,表示參數(shù)是否為數(shù)組风响。它可以彌補(bǔ)typeof運(yùn)算符的不足嘉汰。(靜態(tài)方法)
  • valueOf()方法是一個(gè)所有對(duì)象都擁有的方法,表示對(duì)該對(duì)象求值状勤。不同對(duì)象的valueOf()方法不盡一致鞋怀,數(shù)組的valueOf()方法返回?cái)?shù)組本身。
  • toString()方法也是對(duì)象的通用方法持搜,數(shù)組的toString方法返回?cái)?shù)組的字符串形式密似。
  • push()方法用于在數(shù)組的末端添加一個(gè)或多個(gè)元素,并返回添加新元素后的數(shù)組長(zhǎng)度葫盼。注意残腌,該方法會(huì)改變?cè)瓟?shù)組
  • pop()方法用于刪除數(shù)組的最后一個(gè)元素贫导,并返回該元素抛猫。注意,該方法會(huì)改變?cè)瓟?shù)組孩灯。push()pop()結(jié)合使用闺金,就構(gòu)成了“后進(jìn)先出”的棧結(jié)構(gòu)(stack)。
  • unshift()方法用于在數(shù)組的第一個(gè)位置添加元素峰档,并返回添加新元素后的數(shù)組長(zhǎng)度败匹。注意,該方法會(huì)改變?cè)瓟?shù)組讥巡。
  • shift()方法用于刪除數(shù)組的第一個(gè)元素掀亩,并返回該元素。注意欢顷,該方法會(huì)改變?cè)瓟?shù)組槽棍。push()shift()結(jié)合使用,就構(gòu)成了“先進(jìn)先出”的隊(duì)列結(jié)構(gòu)(queue)。
  • join()方法以指定參數(shù)作為分隔符刹泄,將所有數(shù)組成員連接為一個(gè)字符串返回外里,如果不提供參數(shù),默認(rèn)用逗號(hào)分隔特石,原數(shù)組不變。通過call方法鳖链,這個(gè)方法也可以用于字符串或類似數(shù)組的對(duì)象姆蘸。
  • concat()方法用于多個(gè)數(shù)組的合并。它將新數(shù)組的成員芙委,添加到原數(shù)組成員的后部逞敷,然后返回一個(gè)新數(shù)組,原數(shù)組不變灌侣。如果數(shù)組成員包括對(duì)象推捐,concat方法返回當(dāng)前數(shù)組的一個(gè)淺拷貝。所謂“淺拷貝”侧啼,指的是新數(shù)組拷貝的是對(duì)象的引用牛柒。
  • reverse()方法用于顛倒排列數(shù)組元素,返回改變后的數(shù)組痊乾。注意皮壁,該方法將改變?cè)瓟?shù)組
  • slice()方法用于提取目標(biāo)數(shù)組的一部分哪审,返回一個(gè)新數(shù)組蛾魄,原數(shù)組不變。它的第一個(gè)參數(shù)為起始位置(從0開始)湿滓,第二個(gè)參數(shù)為終止位置(但該位置的元素本身不包括在內(nèi))滴须。如果省略第二個(gè)參數(shù),則一直返回到原數(shù)組的最后一個(gè)成員叽奥。如果參數(shù)是負(fù)數(shù)扔水,則表示倒數(shù)計(jì)算的位置。如果第一個(gè)參數(shù)大于等于數(shù)組長(zhǎng)度而线,或者第二個(gè)參數(shù)小于第一個(gè)參數(shù)铭污,則返回空數(shù)組。slice方法的一個(gè)重要應(yīng)用膀篮,是將類似數(shù)組的對(duì)象轉(zhuǎn)為真正的數(shù)組嘹狞。
  • splice()方法用于刪除原數(shù)組的一部分成員,并可以在刪除的位置添加新的數(shù)組成員誓竿,返回值是被刪除的元素磅网。注意,該方法會(huì)改變?cè)瓟?shù)組筷屡。splice的第一個(gè)參數(shù)是刪除的起始位置(從0開始)涧偷,第二個(gè)參數(shù)是被刪除的元素個(gè)數(shù)簸喂。如果后面還有更多的參數(shù),則表示這些就是要被插入數(shù)組的新元素燎潮。起始位置如果是負(fù)數(shù)喻鳄,就表示從倒數(shù)位置開始刪除。如果只是單純地插入元素确封,splice方法的第二個(gè)參數(shù)可以設(shè)為0除呵。如果只提供第一個(gè)參數(shù),等同于將原數(shù)組在指定位置拆分成兩個(gè)數(shù)組爪喘。
  • sort()方法對(duì)數(shù)組成員進(jìn)行排序颜曾,默認(rèn)是按照字典順序排序。排序后秉剑,原數(shù)組將被改變泛豪。如果想讓sort方法按照自定義方式排序,可以傳入一個(gè)函數(shù)作為參數(shù)侦鹏。sort的參數(shù)函數(shù)本身接受兩個(gè)參數(shù)诡曙,表示進(jìn)行比較的兩個(gè)數(shù)組成員。如果該函數(shù)的返回值大于0种柑,表示第一個(gè)成員排在第二個(gè)成員后面岗仑;其他情況下,都是第一個(gè)元素排在第二個(gè)元素前面聚请。
  • map()方法將數(shù)組的所有成員依次傳入?yún)?shù)函數(shù)荠雕,然后把每一次的執(zhí)行結(jié)果組成一個(gè)新數(shù)組返回,改變?cè)瓟?shù)組驶赏。map方法接受一個(gè)函數(shù)作為參數(shù)炸卑。該函數(shù)調(diào)用時(shí),map方法向它傳入三個(gè)參數(shù):當(dāng)前成員煤傍、當(dāng)前位置和數(shù)組本身盖文。如果數(shù)組有空位,map方法的回調(diào)函數(shù)在這個(gè)位置不會(huì)執(zhí)行蚯姆,會(huì)跳過數(shù)組的空位五续,不會(huì)跳過undefinednullmap方法還可以接受第二個(gè)參數(shù)龄恋,用來綁定回調(diào)函數(shù)內(nèi)部的this變量疙驾,下面代碼通過map方法的第二個(gè)參數(shù),將回調(diào)函數(shù)內(nèi)部的this對(duì)象郭毕,指向arr數(shù)組它碎。
var arr = ['a', 'b', 'c'];

[1, 2].map(function (e) {
  return this[e];
}, arr)
// ['b', 'c']
  • forEach()方法與map方法很相似,也是對(duì)數(shù)組的所有成員依次執(zhí)行參數(shù)函數(shù),將會(huì)改變?cè)瓟?shù)組扳肛。但是傻挂,forEach方法不返回值,只用來操作數(shù)據(jù)挖息。這就是說金拒,如果數(shù)組遍歷的目的是為了得到返回值,那么使用map方法旋讹,否則使用forEach方法殖蚕。forEach的用法與map方法一致,參數(shù)用法和跳過空位都一致沉迹。
  • filter()方法用于過濾數(shù)組成員,滿足條件的成員組成一個(gè)新數(shù)組返回害驹。它的參數(shù)是一個(gè)函數(shù)鞭呕,所有數(shù)組成員依次執(zhí)行該函數(shù),返回結(jié)果為true的成員組成一個(gè)新數(shù)組返回宛官。該方法不會(huì)改變?cè)瓟?shù)組葫松。filter方法的參數(shù)函數(shù)可以接受三個(gè)參數(shù):當(dāng)前成員,當(dāng)前位置和整個(gè)數(shù)組底洗。filter方法還可以接受第二個(gè)參數(shù)腋么,用來綁定參數(shù)函數(shù)內(nèi)部的this變量。
[1, 2, 3, 4, 5].filter(function (elem) {
  return (elem > 3);
})
// [4, 5] 滿足大于3的數(shù)組成員亥揖,作為一個(gè)新數(shù)組返回珊擂。

var arr = [0, 1, 'a', false];
arr.filter(Boolean)
// [1, "a"]  返回?cái)?shù)組arr里面所有布爾值為true的成員

var obj = { MAX: 3 };
var myFilter = function (item) {
  if (item > this.MAX) return true;
};
var arr = [2, 8, 3, 4, 1, 3, 2, 9];
arr.filter(myFilter, obj) // [8, 4, 9] 
//過濾器myFilter內(nèi)部有this變量,它可以被filter方法的第二個(gè)參數(shù)obj綁定费变,返回大于3的成員
  • some()摧扇,every()這兩個(gè)方法類似“斷言”(assert),返回一個(gè)布爾值挚歧,表示判斷數(shù)組成員是否符合某種條件扛稽。它們接受一個(gè)函數(shù)作為參數(shù),所有數(shù)組成員依次執(zhí)行該函數(shù)滑负。該函數(shù)接受三個(gè)參數(shù):當(dāng)前成員在张、當(dāng)前位置和整個(gè)數(shù)組,然后返回一個(gè)布爾值矮慕。
    • some方法是只要一個(gè)成員的返回值是true帮匾,則整個(gè)some方法的返回值就是true,否則返回false凡傅。
    • every方法是所有成員的返回值都是true辟狈,整個(gè)every方法才返回true,否則返回false
    • 注意哼转,對(duì)于空數(shù)組明未,some方法返回falseevery方法返回true壹蔓,回調(diào)函數(shù)都不會(huì)執(zhí)行趟妥。
  • reduce()reduceRight()方法依次處理數(shù)組的每個(gè)成員佣蓉,最終累計(jì)為一個(gè)值披摄。它們的差別是,reduce是從左到右處理(從第一個(gè)成員到最后一個(gè)成員)勇凭,reduceRight則是從右到左(從最后一個(gè)成員到第一個(gè)成員)疚膊,其他完全一樣。reduce方法和reduceRight方法的第一個(gè)參數(shù)都是一個(gè)函數(shù)虾标,該函數(shù)接受四個(gè)參數(shù):1寓盗、累積變量,默認(rèn)為數(shù)組的第一個(gè)成員璧函,2傀蚌、當(dāng)前變量,默認(rèn)為數(shù)組的第二個(gè)成員蘸吓,3善炫、當(dāng)前位置(從0開始),4库继、原數(shù)組箩艺。這四個(gè)參數(shù)之中,只有前兩個(gè)是必須的制跟,后兩個(gè)則是可選的舅桩。
[1, 2, 3, 4, 5].reduce(function (a, b) {
  console.log(a, b);
  return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后結(jié)果:15

如果要對(duì)累積變量指定初值,可以把它放在reduce方法和reduceRight方法的第二個(gè)參數(shù)雨膨。處理空數(shù)組很有用
[1, 2, 3, 4, 5].reduce(function (a, b) {
  return a + b;
}, 10);
// 25 指定參數(shù)a的初值為10擂涛,所以數(shù)組從10開始累加,最終結(jié)果為25聊记。注意撒妈,這時(shí)b是從數(shù)組的第一個(gè)成員開始遍歷。
處理空數(shù)組
function add(prev, cur) {
  return prev + cur;
}
[].reduce(add)
// TypeError: Reduce of empty array with no initial value
[].reduce(add, 1)
// 1 由于空數(shù)組取不到初始值排监,reduce方法會(huì)報(bào)錯(cuò)狰右。這時(shí),加上第二個(gè)參數(shù)舆床,就能保證總是會(huì)返回一個(gè)值棋蚌。

由于這兩個(gè)方法會(huì)遍歷數(shù)組嫁佳,所以實(shí)際上還可以用來做一些遍歷相關(guān)的操作。比如谷暮,找出字符長(zhǎng)度最長(zhǎng)的數(shù)組成員蒿往。

function findLongest(entries) {
  return entries.reduce(function (longest, entry) {
    return entry.length > longest.length ? entry : longest;
  }, '');
}
findLongest(['aaa', 'bb', 'c']) // "aaa"
  • indexOf()方法返回給定元素在數(shù)組中第一次出現(xiàn)的位置,如果沒有出現(xiàn)則返回-1湿弦,還可以接受第二個(gè)參數(shù)瓤漏,表示搜索的開始位置。
  • lastIndexOf()方法返回給定元素在數(shù)組中最后一次出現(xiàn)的位置颊埃,如果沒有出現(xiàn)則返回-1蔬充,indexOf,lastIndexOf這兩個(gè)方法不能用來搜索NaN的位置班利,即它們無法確定數(shù)組成員是否包含NaN饥漫,這是因?yàn)檫@兩個(gè)方法內(nèi)部,使用嚴(yán)格相等運(yùn)算符(===)進(jìn)行比較罗标,而NaN是唯一一個(gè)不等于自身的值趾浅。
    上面這些數(shù)組方法之中,有不少返回的還是數(shù)組馒稍,所以可以鏈?zhǔn)绞褂谩?/li>
//上面代碼中,先產(chǎn)生一個(gè)所有 Email 地址組成的數(shù)組浅侨,然后再過濾出以t開頭的 Email 地址纽谒,最后將它打印出來。
var users = [
  {name: 'tom', email: 'tom@example.com'},
  {name: 'peter', email: 'peter@example.com'}
];

users
.map(function (user) {
  return user.email;
})
.filter(function (email) {
  return /^t/.test(email);
})
.forEach(function (email) {
  console.log(email);
});
// "tom@example.com"

包裝對(duì)象

對(duì)象是 JavaScript 語言最主要的數(shù)據(jù)類型如输,三種原始類型的值——數(shù)值鼓黔、字符串、布爾值——在一定條件下不见,也會(huì)自動(dòng)轉(zhuǎn)為對(duì)象澳化,也就是原始類型的“包裝對(duì)象”。所謂“包裝對(duì)象”稳吮,就是分別與數(shù)值缎谷、字符串、布爾值相對(duì)應(yīng)的Number灶似、String列林、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象酪惭。包裝對(duì)象的最大目的希痴,首先是使得 JavaScript 的對(duì)象涵蓋所有的值,其次使得原始類型的值可以方便地調(diào)用某些方法春感。Number砌创、StringBoolean如果不作為構(gòu)造函數(shù)調(diào)用(即調(diào)用時(shí)不加new)虏缸,常常用于將任意類型的值轉(zhuǎn)為數(shù)值、字符串和布爾值嫩实。

//生成包裝對(duì)象
var v1 = new Number(123);
var v2 = new String('abc');
var v3 = new Boolean(true);

三種包裝對(duì)象各自提供了許多實(shí)例方法刽辙,它們共同具有、從Object對(duì)象繼承的方法:valueOftoString舶赔。valueOf方法返回包裝對(duì)象實(shí)例對(duì)應(yīng)的原始類型的值扫倡。toString方法返回對(duì)應(yīng)的字符串形式。

原始類型的值竟纳,可以自動(dòng)當(dāng)作包裝對(duì)象調(diào)用撵溃,即調(diào)用包裝對(duì)象的屬性和方法。這時(shí)锥累,JavaScript 引擎會(huì)自動(dòng)將原始類型的值轉(zhuǎn)為包裝對(duì)象實(shí)例缘挑,在使用后立刻銷毀實(shí)例。假如abc是一個(gè)字符串桶略,本身不是對(duì)象语淘,不能調(diào)用length屬性。JavaScript 引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象际歼,在這個(gè)對(duì)象上調(diào)用length屬性惶翻。調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀鹅心。這就叫原始類型與實(shí)例對(duì)象的自動(dòng)轉(zhuǎn)換吕粗。自動(dòng)轉(zhuǎn)換生成的包裝對(duì)象是只讀的,無法修改旭愧。所以颅筋,字符串無法添加新屬性。除了原生的實(shí)例方法输枯,包裝對(duì)象還可以自定義方法和屬性议泵,供原始類型的值直接調(diào)用。

注意:調(diào)用結(jié)束后桃熄,包裝對(duì)象實(shí)例會(huì)自動(dòng)銷毀先口。這意味著,下一次調(diào)用字符串的屬性時(shí)蜻拨,實(shí)際是調(diào)用一個(gè)新生成的對(duì)象池充,而不是上一次調(diào)用時(shí)生成的那個(gè)對(duì)象,所以取不到賦值在上一個(gè)對(duì)象的屬性缎讼。如果要為字符串添加屬性收夸,只有在它的原型對(duì)象String.prototype上定義。

Boolean對(duì)象

Boolean對(duì)象是 JavaScript 的三個(gè)包裝對(duì)象之一血崭。作為構(gòu)造函數(shù)卧惜,它主要用于生成布爾值的包裝對(duì)象實(shí)例厘灼。注意false對(duì)應(yīng)的包裝對(duì)象實(shí)例咽瓷,布爾運(yùn)算結(jié)果也是true设凹。Boolean對(duì)象除了可以作為構(gòu)造函數(shù),還可以單獨(dú)使用茅姜,將任意值轉(zhuǎn)為布爾值闪朱。這時(shí)Boolean就是一個(gè)單純的工具方法。使用雙重的否運(yùn)算符(!)也可以將任意值轉(zhuǎn)為對(duì)應(yīng)的布爾值钻洒。

Number對(duì)象

Number對(duì)象是數(shù)值對(duì)應(yīng)的包裝對(duì)象奋姿,可以作為構(gòu)造函數(shù)使用,也可以作為工具函數(shù)使用素标。Number對(duì)象擁有以下一些靜態(tài)屬性(即直接定義在Number對(duì)象上的屬性称诗,而不是定義在實(shí)例上的屬性)。

  • Number.POSITIVE_INFINITY:正的無限头遭,指向Infinity寓免。
  • Number.NEGATIVE_INFINITY:負(fù)的無限,指向-Infinity计维。
  • Number.NaN:表示非數(shù)值袜香,指向NaN
  • Number.MIN_VALUE:表示最小的正數(shù)(即最接近0的正數(shù)鲫惶,在64位浮點(diǎn)數(shù)體系中為5e-324)困鸥,相應(yīng)的,最接近0的負(fù)數(shù)為-Number.MIN_VALUE剑按。
  • Number.MAX_SAFE_INTEGER:表示能夠精確表示的最大整數(shù),即9007199254740991澜术。
  • Number.MIN_SAFE_INTEGER:表示能夠精確表示的最小整數(shù)艺蝴,即-9007199254740991
Number對(duì)象有4個(gè)實(shí)例方法鸟废,都跟將數(shù)值轉(zhuǎn)換成指定格式有關(guān)猜敢。
  • Number對(duì)象部署了自己的toString方法,用來將一個(gè)數(shù)值轉(zhuǎn)為字符串形式盒延。此方法只能將十進(jìn)制的數(shù)缩擂,轉(zhuǎn)為其他進(jìn)制的字符串。如果要將其他進(jìn)制的數(shù)添寺,轉(zhuǎn)回十進(jìn)制胯盯,需要使用parseInt方法。
//toString方法可以接受一個(gè)參數(shù)计露,表示輸出的進(jìn)制博脑。
//如果省略這個(gè)參數(shù)憎乙,默認(rèn)將數(shù)值先轉(zhuǎn)為十進(jìn)制,再輸出字符串叉趣;否則泞边,就根據(jù)參數(shù)指定的進(jìn)制,將一個(gè)數(shù)字轉(zhuǎn)化成某個(gè)進(jìn)制的字符串疗杉。
(10).toString() // "10"

//10一定要放在括號(hào)里阵谚,這樣表明后面的點(diǎn)表示調(diào)用對(duì)象屬性。如果不加括號(hào)烟具,這個(gè)點(diǎn)會(huì)被 JavaScript 引擎解釋成小數(shù)點(diǎn)梢什,從而報(bào)錯(cuò)。
10.toString(2) // SyntaxError: Unexpected token ILLEGAL

//通過方括號(hào)運(yùn)算符也可以調(diào)用toString方法净赴。
10['toString'](2) // "1010"
  • toFixed方法先將一個(gè)數(shù)轉(zhuǎn)為指定位數(shù)的小數(shù)绳矩,然后返回這個(gè)小數(shù)對(duì)應(yīng)的字符串。參數(shù)為小數(shù)位數(shù)玖翅,有效范圍為0到20翼馆,超出這個(gè)范圍將拋出 RangeError 錯(cuò)誤。
  • toExponential方法用于將一個(gè)數(shù)轉(zhuǎn)為科學(xué)計(jì)數(shù)法形式金度。參數(shù)是小數(shù)點(diǎn)后有效數(shù)字的位數(shù)应媚,范圍為0到20,超出這個(gè)范圍猜极,會(huì)拋出一個(gè) RangeError 錯(cuò)誤中姜。
  • toPrecision方法用于將一個(gè)數(shù)轉(zhuǎn)為指定位數(shù)的有效數(shù)字。參數(shù)為有效數(shù)字的位數(shù)跟伏,范圍是1到21丢胚,超出這個(gè)范圍會(huì)拋出 RangeError 錯(cuò)誤。
  • 與其他對(duì)象一樣受扳,Number.prototype對(duì)象上面可以自定義方法携龟,被Number的實(shí)例繼承。

String對(duì)象

String對(duì)象是 JavaScript 原生提供的三個(gè)包裝對(duì)象之一勘高,用來生成字符串對(duì)象峡蟋。字符串對(duì)象是一個(gè)類似數(shù)組的對(duì)象(很像數(shù)組,但不是數(shù)組)华望。除了用作構(gòu)造函數(shù)蕊蝗,String對(duì)象還可以當(dāng)作工具方法使用,將任意類型的值轉(zhuǎn)為字符串赖舟。

String的靜態(tài)方法和實(shí)例方法
  • String.fromCharCode()靜態(tài)方法(即定義在對(duì)象本身蓬戚,而不是定義在對(duì)象實(shí)例的方法),該方法的參數(shù)是一個(gè)或多個(gè)數(shù)值宾抓,代表 Unicode 碼點(diǎn)碌更,返回值是這些碼點(diǎn)組成的字符串裕偿。注意,該方法不支持 Unicode 碼點(diǎn)大于0xFFFF的字符痛单,即傳入的參數(shù)不能大于0xFFFF(即十進(jìn)制的 65535)嘿棘。這種現(xiàn)象的根本原因在于,碼點(diǎn)大于0xFFFF的字符占用四個(gè)字節(jié)旭绒,而 JavaScript 默認(rèn)支持兩個(gè)字節(jié)的字符鸟妙。這種情況下,必須把0x20BB7拆成兩個(gè)字符表示挥吵。
  • 字符串實(shí)例的length屬性返回字符串的長(zhǎng)度重父。
  • charAt()方法返回指定位置的字符,參數(shù)是從0開始編號(hào)的位置忽匈。如果參數(shù)為負(fù)數(shù)房午,或大于等于字符串的長(zhǎng)度,charAt返回空字符串丹允。
  • charCodeAt()方法返回字符串指定位置的 Unicode 碼點(diǎn)(十進(jìn)制表示)郭厌,相當(dāng)于String.fromCharCode()的逆操作。參數(shù)是字符串的下標(biāo)雕蔽,如果沒有任何參數(shù)折柠,charCodeAt返回首字符的Unicode 碼點(diǎn)。如果參數(shù)為負(fù)數(shù)批狐,或大于等于字符串的長(zhǎng)度扇售,charCodeAt返回NaN注意嚣艇,charCodeAt方法返回的 Unicode 碼點(diǎn)不會(huì)大于65536(0xFFFF)承冰,也就是說,只返回兩個(gè)字節(jié)的字符的碼點(diǎn)食零。如果遇到碼點(diǎn)大于 65536 的字符(四個(gè)字節(jié)的字符)巷懈,必需連續(xù)使用兩次charCodeAt,不僅讀入charCodeAt(i)慌洪,還要讀入charCodeAt(i+1),將兩個(gè)值放在一起凑保,才能得到準(zhǔn)確的字符冈爹。
  • concat()方法用于連接兩個(gè)字符串,返回一個(gè)新字符串欧引,不改變?cè)址?/strong>频伤。
  • slice()方法用于從原字符串取出子字符串并返回,不改變?cè)址?/strong>芝此。它的第一個(gè)參數(shù)是子字符串的開始位置憋肖,第二個(gè)參數(shù)是子字符串的結(jié)束位置(不含該位置)因痛。如果省略第二個(gè)參數(shù),則表示子字符串一直到原字符串結(jié)束岸更。如果參數(shù)是負(fù)值鸵膏,表示從結(jié)尾開始倒數(shù)計(jì)算的位置,即該負(fù)值加上字符串長(zhǎng)度怎炊。如果第一個(gè)參數(shù)大于第二個(gè)參數(shù)谭企,slice方法返回一個(gè)空字符串。
  • substring方法用于從原字符串取出子字符串并返回评肆,不改變?cè)址?/strong>债查,跟slice方法很相像。它的第一個(gè)參數(shù)表示子字符串的開始位置瓜挽,第二個(gè)位置表示結(jié)束位置(返回結(jié)果不含該位置)盹廷。如果省略第二個(gè)參數(shù),則表示子字符串一直到原字符串的結(jié)束久橙。如果第一個(gè)參數(shù)大于第二個(gè)參數(shù)俄占,substring方法會(huì)自動(dòng)更換兩個(gè)參數(shù)的位置。如果參數(shù)是負(fù)數(shù)剥汤,substring方法會(huì)自動(dòng)將負(fù)數(shù)轉(zhuǎn)為0颠放。由于這些規(guī)則違反直覺,因此不建議使用substring方法吭敢,應(yīng)該優(yōu)先使用slice碰凶。
  • substr()方法用于從原字符串取出子字符串并返回,不改變?cè)址雇眨?code>slice和substring方法的作用相同欲低。第一個(gè)參數(shù)是子字符串的開始位置(從0開始計(jì)算),第二個(gè)參數(shù)是子字符串的長(zhǎng)度畜晰。如果省略第二個(gè)參數(shù)砾莱,則表示子字符串一直到原字符串的結(jié)束。如果第一個(gè)參數(shù)是負(fù)數(shù)凄鼻,表示倒數(shù)計(jì)算的字符位置腊瑟。如果第二個(gè)參數(shù)是負(fù)數(shù),將被自動(dòng)轉(zhuǎn)為0块蚌,因此會(huì)返回空字符串闰非。
  • indexOf()方法用于確定一個(gè)字符串在另一個(gè)字符串中第一次出現(xiàn)的位置,返回結(jié)果是匹配開始的位置峭范。如果返回-1财松,就表示不匹配。可以接受第二個(gè)參數(shù)辆毡,表示從該位置開始向后匹配菜秦。
  • lastIndexOf()方法的用法跟indexOf方法一致,主要的區(qū)別是lastIndexOf從尾部開始匹配舶掖,indexOf則是從頭部開始匹配球昨。第二個(gè)參數(shù)表示從該位置起向前匹配。
  • trim()方法用于去除字符串兩端的空格访锻,返回一個(gè)新字符串褪尝,不改變?cè)址?/strong>。該方法去除的不僅是空格期犬,還包括制表符(\t河哑、\v)、換行符(\n)和回車符(\r)龟虎。
  • toLowerCase方法用于將一個(gè)字符串全部轉(zhuǎn)為小寫璃谨,toUpperCase則是全部轉(zhuǎn)為大寫。它們都返回一個(gè)新字符串鲤妥,不改變?cè)址?/strong>佳吞。
  • match()方法用于確定原字符串是否匹配某個(gè)子字符串,返回一個(gè)數(shù)組棉安,成員為匹配的第一個(gè)字符串底扳。如果沒有找到匹配,則返回null贡耽。適用于正則
  • search()方法的用法基本等同于match衷模,但是返回值為匹配的第一個(gè)位置。如果沒有找到匹配蒲赂,則返回-1阱冶。適用于正則
  • replace()方法用于替換匹配的子字符串,一般情況下只替換第一個(gè)匹配(除非使用帶有g(shù)修飾符的正則表達(dá)式)滥嘴。適用于正則
  • split()方法按照給定規(guī)則分割字符串木蹬,返回一個(gè)由分割出來的子字符串組成的數(shù)組。適用于正則
如果分割規(guī)則為空字符串若皱,則返回?cái)?shù)組的成員是原字符串的每一個(gè)字符镊叁。
'a|b|c'.split('') // ["a", "|", "b", "|", "c"]

如果省略參數(shù),則返回?cái)?shù)組的唯一成員就是原字符串走触。
'a|b|c'.split() // ["a|b|c"]

如果滿足分割規(guī)則的兩個(gè)部分緊鄰著(即兩個(gè)分割符中間沒有其他字符)晦譬,則返回?cái)?shù)組之中會(huì)有一個(gè)空字符串。
'a||c'.split('|') // ['a', '', 'c']

如果滿足分割規(guī)則的部分處于字符串的開頭或結(jié)尾(即它的前面或后面沒有其他字符)饺汹,則返回?cái)?shù)組的第一個(gè)或最后一個(gè)成員是一個(gè)空字符串。
'|b|c'.split('|') // ["", "b", "c"]
'a|b|'.split('|') // ["a", "b", ""]

split方法還可以接受第二個(gè)參數(shù)痰催,限定返回?cái)?shù)組的最大成員數(shù)兜辞。
'a|b|c'.split('|', 0) // []
'a|b|c'.split('|', 1) // ["a"]
'a|b|c'.split('|', 2) // ["a", "b"]
'a|b|c'.split('|', 3) // ["a", "b", "c"]
'a|b|c'.split('|', 4) // ["a", "b", "c"]
  • localeCompare()方法用于比較兩個(gè)字符串迎瞧。它返回一個(gè)整數(shù),如果小于0逸吵,表示第一個(gè)字符串小于第二個(gè)字符串凶硅;如果等于0,表示兩者相等扫皱;如果大于0足绅,表示第一個(gè)字符串大于第二個(gè)字符串。

Math對(duì)象

Math是 JavaScript 的原生對(duì)象韩脑,提供各種數(shù)學(xué)功能氢妈。該對(duì)象不是構(gòu)造函數(shù),不能生成實(shí)例段多,所有的屬性和方法都必須在Math對(duì)象上調(diào)用首量。

Math的靜態(tài)屬性
  • Math.E:常數(shù)e。
  • Math.LN2:2 的自然對(duì)數(shù)进苍。
  • Math.LN10:10 的自然對(duì)數(shù)加缘。
  • Math.LOG2E:以 2 為底的e的對(duì)數(shù)。
  • Math.LOG10E:以 10 為底的e的對(duì)數(shù)觉啊。
  • Math.PI:常數(shù)π拣宏。
  • Math.SQRT1_2:0.5 的平方根。
  • Math.SQRT2:2 的平方根杠人。
Math的靜態(tài)方法
  • Math.abs():絕對(duì)值勋乾,返回參數(shù)值的絕對(duì)值。
  • Math.ceil():向上取整搜吧,返回大于參數(shù)值的最小整數(shù)(天花板值)市俊。
  • Math.floor():向下取整,返回小于參數(shù)值的最大整數(shù)(地板值)滤奈。
  • Math.max():最大值摆昧,返回參數(shù)之中最大的那個(gè)值
  • Math.min():最小值,返回參數(shù)之中最小的那個(gè)值
  • Math.pow():指數(shù)運(yùn)算蜒程,返回以第一個(gè)參數(shù)為底數(shù)绅你、第二個(gè)參數(shù)為冪的指數(shù)值。
  • Math.sqrt():平方根昭躺,返回參數(shù)值的平方根忌锯。如果參數(shù)是一個(gè)負(fù)值,則返回NaN领炫。
  • Math.log():自然對(duì)數(shù)偶垮,返回以e為底的自然對(duì)數(shù)值。
  • Math.exp():e的指數(shù),返回常數(shù)e的參數(shù)次方似舵。
  • Math.round():四舍五入
  • Math.random():隨機(jī)數(shù)脚猾,返回0到1之間的一個(gè)偽隨機(jī)數(shù),可能等于0砚哗,但是一定小于1龙助。
Math對(duì)象的三角函數(shù)方法
  • Math.sin():返回參數(shù)的正弦(參數(shù)為弧度值)
  • Math.cos():返回參數(shù)的余弦(參數(shù)為弧度值)
  • Math.tan():返回參數(shù)的正切(參數(shù)為弧度值)
  • Math.asin():返回參數(shù)的反正弦(返回值為弧度值)
  • Math.acos():返回參數(shù)的反余弦(返回值為弧度值)
  • Math.atan():返回參數(shù)的反正切(返回值為弧度值)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蛛芥,隨后出現(xiàn)的幾起案子提鸟,更是在濱河造成了極大的恐慌,老刑警劉巖仅淑,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件称勋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡漓糙,警方通過查閱死者的電腦和手機(jī)铣缠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昆禽,“玉大人蝗蛙,你說我怎么就攤上這事∽肀睿” “怎么了捡硅?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)盗棵。 經(jīng)常有香客問我壮韭,道長(zhǎng)酝锅,這世上最難降的妖魔是什么刚操? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮月褥,結(jié)果婚禮上瞭恰,老公的妹妹穿的比我還像新娘屯曹。我一直安慰自己,他們只是感情好惊畏,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布恶耽。 她就那樣靜靜地躺著,像睡著了一般颜启。 火紅的嫁衣襯著肌膚如雪偷俭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天缰盏,我揣著相機(jī)與錄音涌萤,去河邊找鬼淹遵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛负溪,可吹牛的內(nèi)容都是我干的合呐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼笙以,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了冻辩?” 一聲冷哼從身側(cè)響起猖腕,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恨闪,沒想到半個(gè)月后倘感,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咙咽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年老玛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钧敞。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜡豹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溉苛,到底是詐尸還是另有隱情镜廉,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布愚战,位于F島的核電站娇唯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寂玲。R本人自食惡果不足惜塔插,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拓哟。 院中可真熱鬧想许,春花似錦、人聲如沸彰檬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逢倍。三九已至捧颅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間较雕,已是汗流浹背碉哑。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工挚币, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扣典。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓妆毕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贮尖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笛粘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 Object 對(duì)象 教程:https://wangdoc.com/javascript/stdlib/obje...
    智勇雙全的小六閱讀 1,580評(píng)論 0 0
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,212評(píng)論 0 4
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,095評(píng)論 0 3
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,367評(píng)論 0 5
  • 陽光明媚的日子 想準(zhǔn)備很多很多美食 小心翼翼 堆進(jìn)餐盒里 找一處遼闊的田野 你看那一對(duì)黃色蝴蝶 你聽那枝頭 清唱的...
    BonjourDaisy閱讀 259評(píng)論 0 1