1 值類型和引用類型
1.1 概念
值類型:原始類型的數(shù)據(jù)也是值類型,傳值方式是值傳遞。
引用類型: 對象類型的數(shù)據(jù)也是引用類型,傳值方式是引用。
1.2 存儲方式
值類型: 存儲在棧結(jié)構(gòu)中, 賦值的時候傳遞的就是數(shù)據(jù)本身。
引用類型: 數(shù)據(jù)本身存儲在堆結(jié)構(gòu)中,數(shù)據(jù)的地址存在棧結(jié)構(gòu)中, 賦值的時候傳遞的是地址。
1.3 不可變和可變
不可變類型: 即值類型或者原始類型,數(shù)據(jù)結(jié)構(gòu)簡單只能作為一個整體存在,無法改變數(shù)據(jù)中的一部分。
可變類型: 即引用類型或者對象類型,由多個屬性組成,可以修改其中的某個屬性。
2 內(nèi)置構(gòu)造函數(shù)(內(nèi)置對象)
在線文檔:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
2.1 Boolean
① 創(chuàng)建一個 Boolean 實例
// 直接量方式創(chuàng)建布爾類型的數(shù)據(jù)
true;
false;
// 使用 Boolean 構(gòu)造函數(shù)創(chuàng)建布爾類型的數(shù)據(jù)
new Boolean();
// 使用 Boolean 函數(shù)創(chuàng)建布爾類型的數(shù)據(jù)
Boolean();
2.2 Number
① 實例的屬性和方法
toFixed(n) 保留指定位數(shù)的小數(shù),不寫參數(shù)則取整 (四舍五入規(guī)則)
toString(n) 把數(shù)字轉(zhuǎn)為字符串,參數(shù)指定多少進制 (2~36進制)
② 構(gòu)造函數(shù)本身的屬性和方法
Number.MAX_VALUE JS中能表示的最大的數(shù)字
Number.MIN_VALUE JS中能表示的最小的正數(shù)
2.3 String
① 實例的屬性和方法
length 字符串的長度(字符個數(shù))
charAt(index) 返回指定索引(index)對應(yīng)的字符
indexOf(value) 返回value在字符串中第一次出現(xiàn)的位置(索引),如果字符串中不存在value則返回 -1
lastIndexOf(value) 返回value在字符串中最后一次出現(xiàn)的位置(索引),如果字符串中不存在value則返回 -1
slice(start [,end]) 截取字符串,指定起始索引和結(jié)束索引(結(jié)果不包括結(jié)束索引的字符), 如果不指定結(jié)束索引則一 直截取到最后
substring() 同 slice
substr(start [,len]) 截取字符串,指定起始索引和截取長度,不指定截取長度則截取到最后
split([sep]) 把字符串分割為數(shù)組,指定sep為分割符。不指定分割符,得到只有一個元素的數(shù)組
toUpperCase() 把字符串所有字符轉(zhuǎn)為大寫
toLowerCase() 把字符串所有字符轉(zhuǎn)為小寫
charCodeAt(index) 返回指定索引對應(yīng)字符串的 unicode 編碼
② 構(gòu)造函數(shù)本身的屬性和方法
String.fromCharCode(編碼) 返回編碼對應(yīng)的字符
2.4 Date
① 創(chuàng)建一個 Date 實例
var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17, 3, 24, 0); //月份值的范圍是0~11
② 實例的屬性和方法
getFullYear() 年
getMonth() 月,取值范圍0~11
getDate() 日
getDay() 星期幾
getHours() 時
getMinutes() 分
getSeconds() 秒
getMilliseconds() 毫秒
getUTC... 獲取標準時區(qū)的年月日時分秒(UTC:Universal Time Coordinated協(xié)調(diào)世界時)
getTime() 獲取時間戳 (距離1970-1-1 0:0:0 的毫秒數(shù))
set... 設(shè)置年月日時分秒
setUTC...
setTime()
③ Date 構(gòu)造函數(shù)本身的屬性和方法
Date.now() 返回此時此刻的時間戳
Date.UTC(年, 月, 日, 時, 分, 秒) 返回指定日期時間的時間戳
2.5 Math
注:Math不是構(gòu)造函數(shù),是一個對象,它的構(gòu)造函數(shù)是 Object。
Math.PI 取圓周率
Math.abs() 取絕對值
Math.sqrt() 取平方根
Math.pow() 求次方
Math.max() 取所有參數(shù)中最大的
Math.min() 取所有參數(shù)中最小的
Math.floor() 舍一取整
Math.ceil() 進一取整
Math.round() 四舍五入取整
Math.random() 取隨機數(shù)(0~1,不含1)
注:如何取整數(shù)隨機數(shù):
//隨機取 0 ~ 9 之間的整數(shù)(含9)
Math.floor(Math.random() * 10);
//隨機取 0 ~ 13 之間的整數(shù)(含13)
Math.floor(Math.random() * 14);
//隨機取 5 ~ 16 之間的整數(shù)(含13): 先隨機取 0 ~ 11,再 + 5
Math.floor(Math.random() * 12) + 5;
2.6 Array
① 訪問方法
concat(arr1, arr2, ...) 合并多個數(shù)組
join('連接符號') 將數(shù)組元素合并成字符串
slice(start,[end]) 截取數(shù)組中的幾個元素組成新的數(shù)組
indexOf() 返回指定元素在數(shù)組中第一次出現(xiàn)的位置,不存在返回-1。 ES5
lastIndexOf() 返回指定元素在數(shù)組中最后一次出現(xiàn)的位置,不存在返回-1。 ES5
forEach(fuction(item, index, array){}) 遍歷數(shù)組,代替for循環(huán),回調(diào)函數(shù)作為參數(shù),沒有返回值
filter(fuction(item, index, array){
return true/false;
}) 過濾數(shù)組,回調(diào)函數(shù)作為參數(shù),返回由滿足條件的元素組成的新數(shù)組。(某一元素滿足條件時回調(diào)函數(shù)返回true,filter則返回該元素;若回調(diào)函數(shù)返回false,filter則不返回該元素,如此返回的元素構(gòu)成一個新的數(shù)組)
map(fuction(item, index, array){
return ...;
}) 回調(diào)函數(shù)作為參數(shù),返回與原數(shù)組長度相同的新數(shù)組,新數(shù)組元素取決于回調(diào)函數(shù)的返回值。用于提取或修改數(shù)組中某一部分數(shù)據(jù)。
every(fuction(item, index, array){
return true/false;
}) 回調(diào)函數(shù)作為參數(shù),返回布爾值,每個回調(diào)函數(shù)都返回true,最終結(jié)果才返回true,如果有回調(diào)函數(shù)返回false則結(jié)束并返回false,不再繼續(xù)回調(diào)。
some(fuction(item, index, array){
return true/false;
}) 回調(diào)函數(shù)作為參數(shù),返回布爾值,只要有一個回調(diào)函數(shù)返回true,最終結(jié)果返回 true
reduce(fuction(prevRes, item, index, array){
return ...;
}, 參數(shù)) 回調(diào)函數(shù)作為參數(shù),把最后一次回調(diào)的返回值作為reduce的返回值,每個回調(diào)的第一個參數(shù)是上一次回調(diào)的返回值。(如果reduce有第二個參數(shù),則作為第一次回調(diào)的prevRes參數(shù);如果reduce沒有第二個參數(shù),則從第1個數(shù)組元素開始遍歷并調(diào)用函數(shù),第0個數(shù)組元素作為第1個數(shù)組元素調(diào)用的回調(diào)函數(shù)的prevRes參數(shù)值。)
reduceRight(fuction(prevRes, item, index, array){
return ...;
}, 參數(shù)) 相比reduce從右向左遍歷
② 修改器方法
push() 在數(shù)組后面添加一個或多個元素,返回添加了元素之后數(shù)組的長度
unshift() 在數(shù)組前面添加一個或多個元素,返回添加了元素之后數(shù)組的長度
pop() 刪除最后一個元素,返回被刪除的元素
shift() 刪除第一個元素,返回被刪除的元素
splice() 替換元素,返回被刪除元素組成的數(shù)組
reverse() 翻轉(zhuǎn)數(shù)組
sort(fuction(next,prev){
return next - prec;
}) 數(shù)組排序,回調(diào)函數(shù)作為參數(shù),若sort不寫參數(shù)默認從最左邊位數(shù)開始從小到大排序。若next > prec,回調(diào)函數(shù)return正數(shù),sort返回從小到大排序的數(shù)組;若next < prec,回調(diào)函數(shù)return負數(shù),sort返回從大到小排序的數(shù)組;
注:數(shù)組的方法中用回調(diào)函數(shù)作為參數(shù),每個元素對應(yīng)一個回調(diào)函數(shù),每個回調(diào)函數(shù)都有一個自己的作用域。
2.7 fuction
Function 實例的屬性和方法:
call(this的指向, 參數(shù)1, 參數(shù)2, ...) 調(diào)用函數(shù)并指定函數(shù)內(nèi)this的值
apply(this的指向, [參數(shù)1, 參數(shù)2, ...]) 把函數(shù)調(diào)用并指定函數(shù)內(nèi)this的值, 第二個參數(shù)是數(shù)組,數(shù)組的元素作為函數(shù)的參數(shù)
bind(this的指向, 參數(shù)1, 參數(shù)2, ...) 不能直接調(diào)用函數(shù),需賦給一個變量再調(diào)用。返回值為一個改變了this執(zhí)行的新函數(shù)。
注:call()和apply()都可以改變函數(shù)中 this 的指向,只是參數(shù)形式不同。bind()也可以改變 函數(shù)中的 this 的指向,但是不能直接調(diào)用函數(shù)。