Object類(lèi)型
創(chuàng)建對(duì)象的方法
- 字面量 {} =>可以同時(shí)添加很多對(duì)象屬性
- new Object()
訪問(wèn)對(duì)象屬性
- object.key
- object["key"] =>支持["xx yy"] 艇炎,變量支持 obecjt[某個(gè)變量字符串]
Array類(lèi)型
數(shù)組的構(gòu)造方法
- new Array() new Array(20) new Array('a','b','c')
- 字面量 [] [1,2,3]
.length屬性
- 可以減少擴(kuò)展數(shù)據(jù)的長(zhǎng)度 .length=12
- 可以往數(shù)組最后追加元素 object[object.length]='新元素'
檢測(cè)數(shù)組
- a instanceof Array a的原型鏈上有沒(méi)有Array(弊端,多個(gè)全局環(huán)境Array定位不知,容易出問(wèn)題)
- a.isArray(value)
轉(zhuǎn)換方法咙冗,數(shù)組轉(zhuǎn)換字符串
- toLocaleString() 返回一個(gè)字符串表示數(shù)組中的元素阵谚。數(shù)組中的元素將使用各自的 toLocaleString 方法轉(zhuǎn)成字符串椎组,這些字符串將使用一個(gè)特定語(yǔ)言環(huán)境的字符串
- toString() 數(shù)組的字符串表現(xiàn)形式(常用:可以將數(shù)組編程,隔開(kāi)的字符串)
- valueOf() 數(shù)字表現(xiàn)形式,沒(méi)啥用健霹,還那樣
- .join('|') 全能凡傅,可以將數(shù)組轉(zhuǎn)換為任意符號(hào)分割的字符串
棧方法(后進(jìn)先出)
- .push() 數(shù)組尾部追加元素 a.push('a','b') 返回值是數(shù)組的當(dāng)前長(zhǎng)度
- .pop() 數(shù)組尾部刪除元素 a.pop() 返回值是被刪除的元素
隊(duì)列方法(先進(jìn)先出)
- .unshift() 數(shù)組的頭部追加元素 a.unshift('a','b') 返回值是數(shù)組的當(dāng)前長(zhǎng)度
- .shift() 數(shù)組的頭部刪除元素 a.shift() 返回值是被刪除的元素
重排序方法
- .reverse() 反轉(zhuǎn)數(shù)組
- .sort() 按照升序排列數(shù)組元素(原理:先調(diào)用toString()轉(zhuǎn)型方法辟狈,然后再比較排序)
- 所以再使用sort時(shí)候需要利用第一個(gè)參數(shù)比較函數(shù),比較函數(shù)接受兩個(gè)參數(shù)夏跷,如果第一個(gè)參數(shù)位于第二個(gè)參數(shù)之前則返回一個(gè)負(fù)數(shù)哼转,兩個(gè)數(shù)相等返回0,第一個(gè)參數(shù)位于第二個(gè)參數(shù)之后返回一個(gè)正數(shù)拓春。
以下是一個(gè)升序代碼:
colors.sort((a,b)=>{
if(a>b){
return -1
}else if(a<b){
return 1
}else{
return 0
}
})
- 如果sort只是給數(shù)值排序的話释簿,可以使用以下簡(jiǎn)寫(xiě)方法
colors.sort(function(value1,value2){
return value1 - value2
})
- reverse 和 sort 的返回值都是排序后的數(shù)組,當(dāng)然原數(shù)組也被改變了
操作方法
- concat 用于合并數(shù)組硼莽,得到新數(shù)組庶溶,不會(huì)改變?cè)瓟?shù)組
var list = ['a','b','c']
const newList = list.concat('d','e')
console.log(list)
console.log(newList)
- slice(a,b)從下標(biāo)a截取到下標(biāo)b,得到新數(shù)組懂鸵,不會(huì)改變?cè)瓟?shù)組
var list = ['a','b','c','d','e']
const newList = list.slice(1)
const newList2 = list.slice(1,4)
console.log(newList)
console.log(newList2)
- splice 數(shù)組中刪除偏螺,數(shù)組中插入,數(shù)組中替換
// splic刪除元素
var list = ['a','b','c','d','e','f','g']
const newlist = list.splice(0,2)
console.log(list)
console.log(newlist)
// splic插入元素
var list = ['a','b','c','d','e','f','g']
const newlist = list.splice(1,0,'王','后')
console.log(list)
console.log(newlist)
// splice替換元素
var list = ['a','b','c','d','e','f','g']
const newlist = list.splice(1,3,'王','后')//bcd消失
console.log(list)
console.log(newlist)
位置方法
- indexOf和lastIndexOf都會(huì)返回查找元素的位置匆光,找到返回位置下標(biāo)套像,找不到返回-1,last是反向查找
var list = [1,'2','a',1,'b']
console.log(list.indexOf(1))
console.log(list.indexOf('1'))
//從下標(biāo)2開(kāi)始找1
console.log(list.indexOf(1,2))
console.log(list.lastIndexOf(1))
console.log(list.lastIndexOf('1'))
迭代方法终息,遍歷方法
- every,some 測(cè)試數(shù)組的元素是否都通過(guò)了指定函數(shù)的測(cè)試夺巩,every需要每項(xiàng)都通過(guò)返回true贞让,some只需要一項(xiàng)通過(guò)返回true
var arr = [1, 12, 32, 2, 3, 44, 120, 3, 5];
var res1 = arr.every(function(item, index ,array){
//有一項(xiàng)不滿足條件,就會(huì)終止循環(huán)
console.log(item)
console.log(index)
console.log(array)
return item > 20;
});
console.log(res1); // false
var res2 = arr.some(function(item, index ,array){
//有一項(xiàng)滿足了條件,就終止循環(huán)
return item > 20;
});
console.log(res2); // true
- filter 返回符合條件組成的新數(shù)組
var arr = [1, 12, 32, 2, 3, 44, 120, 3, 5];
var res1 = arr.filter(function(item, index, array){
return item > 20
})
console.log(res1)
- map 也是返回新數(shù)組,不同的是柳譬,如果是邏輯判斷:返回的是布爾值組成的數(shù)據(jù)喳张;如果是運(yùn)算表達(dá)式,就是計(jì)算后的結(jié)果
var arr = [1, 12, 32, 2, 3, 44, 120, 3, 5];
var res4 = arr.map(function(item, index, array){
return item > 20;
});
console.log(res4); // false,false,true,false,false,true,true,false,false
var res5 = arr.map(function(item, index, array){
return item * 2;
});
console.log(res5); // 2,24,64,4,6,88,240,6,10
- foreach() 就是遍歷美澳,沒(méi)返回值
var arr = [1, 12, 32, 2, 3, 44, 120, 3, 5];
var res7 = arr.forEach(function(item, index, array){
//執(zhí)行你想要的操作
console.log(item)
});
console.log(res7); // undefined
歸并方法
- reduce销部,ruduceRight 常用于計(jì)算數(shù)組的合,回調(diào)中的兩個(gè)參數(shù)分別是 之前元素合 當(dāng)前遍歷的元素制跟。ruduceRight是倒著計(jì)算
var arr = [1, 3, 2, 2, 3, 44, 120, 3, 5];
var res6 = arr.reduce(function(prev, cur){
//第一次prev是4,然后是6,然后是8...
return prev+ cur;
});
console.log(res6); //183 即為合
Date類(lèi)型
- new Date() 默認(rèn)返回當(dāng)前時(shí)間的時(shí)間對(duì)象舅桩,可以傳入毫秒數(shù)指定時(shí)間,也可以傳入parse('May 25, 2004')簡(jiǎn)化雨膨,如例1.也可以用UTC(2005,4,5,12,33,33)[注意:其中4代表月份擂涛,是從0開(kāi)始,也就是說(shuō)4其實(shí)是5月]哥放,如例2
當(dāng)你直接再Date()中寫(xiě)入數(shù)值時(shí)歼指,會(huì)根據(jù)本地時(shí)間創(chuàng)建時(shí)間對(duì)象,如例3
例1:
var someDate = new Date(Date.parse("2019-12-2 12:24"));
例2:
// GMT 時(shí)間 2005 年 5 月 5 日下午 5:55:55
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
例3:
// 本地時(shí)間 2005 年 5 月 5 日下午 5:55:55
var allFives = new Date(2005, 4, 5, 17, 55, 55);
- Data.now()方法甥雕,返回表示調(diào)用這個(gè)方法時(shí)的日期和時(shí)間的毫秒數(shù)
計(jì)算一段代碼運(yùn)行所需要時(shí)間:
//取得開(kāi)始時(shí)間
var start = Date.now();
//調(diào)用函數(shù)
doSomething();
//取得停止時(shí)間
var stop = Date.now(),
result = stop – start;
*時(shí)間的比較:時(shí)間對(duì)象在進(jìn)行比較時(shí),會(huì)先調(diào)用valueOf()轉(zhuǎn)換成毫秒數(shù)比較胀茵,所以日期靠后的毫秒數(shù)越大社露,值越大
var time = new Date()
setTimeout(()=>{
var time2 = new Date()
alert(time2 > time) //true
},3000)
日期格式化
- Date 類(lèi)型還有一些專(zhuān)門(mén)用于將日期格式化為字符串的方法
- toDateString()——以特定于實(shí)現(xiàn)的格式顯示星期幾、月琼娘、日和年峭弟; 【Tue Jan 29 2019】
- toTimeString()——以特定于實(shí)現(xiàn)的格式顯示時(shí)、分脱拼、秒和時(shí)區(qū)瞒瘸;【11:41:58 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)】
- toLocaleDateString()——以特定于地區(qū)的格式顯示星期幾、月熄浓、日和年情臭; 【2019/1/29】
- toLocaleTimeString()——以特定于實(shí)現(xiàn)的格式顯示時(shí)、分赌蔑、秒俯在; 【上午11:41:58】
- toUTCString()——以特定于實(shí)現(xiàn)的格式完整的 UTC 日期⊥薰撸【Tue, 29 Jan 2019 03:41:58 GMT】
日期時(shí)間組件方法
- getTime() 返回表示日期的毫秒數(shù)跷乐;與valueOf()方法返回的值相同
setTime(毫秒) 以毫秒數(shù)設(shè)置日期,會(huì)改變整個(gè)日期
getFullYear() 取得4位數(shù)的年份(如2007而非僅07)
getUTCFullYear() 返回UTC日期的4位數(shù)年份
setFullYear(年) 設(shè)置日期的年份趾浅。傳入的年份值必須是4位數(shù)字(如2007而非僅07)
setUTCFullYear(年) 設(shè)置UTC日期的年份愕提。傳入的年份值必須是4位數(shù)字(如2007而非僅07)
getMonth() 返回日期中的月份馒稍,其中0表示一月,11表示十二月
getUTCMonth() 返回UTC日期中的月份浅侨,其中0表示一月筷黔,11表示十二月
setMonth(月) 設(shè)置日期的月份。傳入的月份值必須大于0仗颈,超過(guò)11則增加年份
setUTCMonth(月) 設(shè)置UTC日期的月份佛舱。傳入的月份值必須大于0,超過(guò)11則增加年份
getDate() 返回日期月份中的天數(shù)(1到31)
getUTCDate() 返回UTC日期月份中的天數(shù)(1到31)
setDate(日) 設(shè)置日期月份中的天數(shù)挨决。如果傳入的值超過(guò)了該月中應(yīng)有的天數(shù)请祖,則增加月份
setUTCDate(日) 設(shè)置UTC日期月份中的天數(shù)。如果傳入的值超過(guò)了該月中應(yīng)有的天數(shù)脖祈,則增加月份
getDay() 返回日期中星期的星期幾(其中0表示星期日肆捕,6表示星期六)
getUTCDay() 返回UTC日期中星期的星期幾(其中0表示星期日,6表示星期六)
getHours() 返回日期中的小時(shí)數(shù)(0到23)
getUTCHours() 返回UTC日期中的小時(shí)數(shù)(0到23)
setHours(時(shí)) 設(shè)置日期中的小時(shí)數(shù)盖高。傳入的值超過(guò)了23則增加月份中的天數(shù)
setUTCHours(時(shí)) 設(shè)置UTC日期中的小時(shí)數(shù)慎陵。傳入的值超過(guò)了23則增加月份中的天數(shù)
getMinutes() 返回日期中的分鐘數(shù)(0到59)
getUTCMinutes() 返回UTC日期中的分鐘數(shù)(0到59)
setMinutes(分) 設(shè)置日期中的分鐘數(shù)。傳入的值超過(guò)59則增加小時(shí)數(shù)
setUTCMinutes(分) 設(shè)置UTC日期中的分鐘數(shù)喻奥。傳入的值超過(guò)59則增加小時(shí)數(shù)
getSeconds() 返回日期中的秒數(shù)(0到59)
getUTCSeconds() 返回UTC日期中的秒數(shù)(0到59)
setSeconds(秒) 設(shè)置日期中的秒數(shù)席纽。傳入的值超過(guò)了59會(huì)增加分鐘數(shù)
setUTCSeconds(秒) 設(shè)置UTC日期中的秒數(shù)。傳入的值超過(guò)了59會(huì)增加分鐘數(shù)
getMilliseconds() 返回日期中的毫秒數(shù)
getUTCMilliseconds() 返回UTC日期中的毫秒數(shù)
setMilliseconds(毫秒) 設(shè)置日期中的毫秒數(shù)
setUTCMilliseconds(毫秒) 設(shè)置UTC日期中的毫秒數(shù)
getTimezoneOffset() 返回本地時(shí)間與UTC時(shí)間相差的分鐘數(shù)撞蚕。例如润梯,美國(guó)東部標(biāo)準(zhǔn)時(shí)間返回300。在某
地進(jìn)入夏令時(shí)的情況下甥厦,這個(gè)值會(huì)有所變化
Function類(lèi)型
- 函數(shù)是對(duì)象纺铭,每個(gè)函數(shù)都是Function類(lèi)型的實(shí)例
普通創(chuàng)建函數(shù):
function sum (num1, num2) {
return num1 + num2;
} ;
var sum = function(num1, num2){
return num1 + num2;
};
構(gòu)造器創(chuàng)建函數(shù):
注:除了最后一個(gè)屬性是函數(shù)體,其他都是函數(shù)的參數(shù)
var sum =new Function("num1" , "num2" , "return num1+num2")
- 函數(shù)既然是對(duì)象刀疙,那么他就能有多個(gè)引用
function sum (num1, num2) {
return num1 + num2;
} ;
const sum2 = sum舶赔;
sum = null;// 斷絕關(guān)系
sum2(1谦秧,2)//3 不影響
- 沒(méi)有重載
因?yàn)閖s函數(shù)是對(duì)象竟纳,函數(shù)名是對(duì)象的引用,當(dāng)函數(shù)名被覆蓋了油够,引用也隨之被覆蓋蚁袭,所以沒(méi)有重載這一概念
function sum1(){
alert(1)
}
sum1=function(){ //sum1的指向被修改,故彈窗2
alert(2)
}
-
函數(shù)聲明與函數(shù)表達(dá)式
函數(shù)聲明有變量提升石咬,解析器會(huì)率先讀取函數(shù)聲明揩悄,并使其在執(zhí)行任何代碼之前可用(可以訪問(wèn))。至于函數(shù)表達(dá)式鬼悠,則必須等到解析器執(zhí)行到它所在的代碼行删性,才會(huì)真正被解釋執(zhí)行亏娜。
函數(shù)內(nèi)部屬性
arguments 參數(shù)
arguments.callee() 函數(shù)本身
arguments.callee().caller() 函數(shù)的調(diào)用者
this:函數(shù)執(zhí)行作用域正常執(zhí)行sum函數(shù):sum()
sum.apply(this,[a,b]) 在this作用域中執(zhí)行sum函數(shù)
sum.call(this,a,b)-
bind()會(huì)創(chuàng)建新的作用域?qū)嵗?/p>
基本包裝類(lèi)型
為什么基本類(lèi)型(例如string)能像對(duì)象一樣調(diào)用substring()方法维贺?
- 程序在執(zhí)行到字符串那一行時(shí),會(huì)執(zhí)行以下操作:
- 創(chuàng)建String類(lèi)型的一個(gè)實(shí)例
- 在實(shí)例上調(diào)用指定的方法
-
銷(xiāo)毀這個(gè)實(shí)例
布爾類(lèi)型一樣巴帮。布爾類(lèi)型調(diào)用toString()會(huì)返回字符串表示
number類(lèi)型
number.toFixed(2) 四舍五入保留兩位小數(shù)
number.toExponential() 科學(xué)記數(shù)法表示
number.toPrecision() 智能表示
ps:Math.floor(15.778676 * 100) / 100 直接舍到小數(shù)點(diǎn)后兩位-
String類(lèi)型的方法
str.length 注意沒(méi)有(),字符串長(zhǎng)度
str.charAt() 指定下標(biāo)的字符
str.concat('pingjie'溯泣,'zufuchuan') 拼接字符串
slice,substring榕茧,substr都不會(huì)改變?cè)址?/strong>
slice(a,b) 截取從a到b(如果是負(fù)數(shù)倒著數(shù))
substring(a,b) 截取從a到b(如果是負(fù)數(shù)返回全部)
substr(a,n) 從a開(kāi)始截取n個(gè)
indexOf('o') 返回o首次出現(xiàn)的位置
indexOf('o',6) 從下標(biāo)6開(kāi)始找o的位置
lastIndexOf('o',6) 反向操作
trim() 去掉開(kāi)頭和末尾的空格
toUpperCase() 轉(zhuǎn)大寫(xiě)
toLowerCase() 轉(zhuǎn)小寫(xiě)
match() 正則查找方法垃沦,傳入正則表達(dá)式,或者RegExp對(duì)象
search() 正則查找方法
replace(’a‘,'b') 替換字符串用押,將第一次出現(xiàn)的a替換成b
replace(/a/g,'b') 支持正則肢簿,將所有的a替換成b
str.split(',') 將字符串分割成數(shù)組
array.join('|') 將數(shù)組組成字符串
a.localeCompare(b) 比較a字符串和b字符串出現(xiàn)在字母表的位置,返回值為1 0 -1
fromCharCode(104蜻拨,101) 將編碼值轉(zhuǎn)換為字符串池充,charCodeAt()的方向操作
單體內(nèi)置對(duì)象
global對(duì)象
encodeURI()、encodeURIComponent()缎讼、decodeURI()和 decode-URIComponent():可以對(duì)url進(jìn)行編碼反碼
eval("") 整個(gè) ECMAScript 語(yǔ)言中最強(qiáng)大的一個(gè)方法收夸,eval能夠?qū)?shù)字符串作為代碼執(zhí)行
eval("alert(1)") 《==等于==》 alert(1)
- web瀏覽器的global對(duì)象都掛在window下
Math對(duì)象
為保存數(shù)學(xué)公式和信息提供了一個(gè)公共位置
- max() min()
-
舍入取整
Math.ceil() 向上取整
Math.round() 四舍五入
Math.floor() 向下取整
random()方法
Math.random() 返回0~1之間隨機(jī)小數(shù) 0.2312812312
Math.floor(Math.random()10+1) 利用取整獲得1-10之間的隨機(jī)數(shù)
Math.floor(Math.random()10) 獲得0-10之間的隨機(jī)數(shù)
Math.floor(Math.random()*100) 獲得0-100之間的隨機(jī)數(shù)