【24】JavaScript(值類型和引用類型、內(nèi)置構(gòu)造函數(shù)(內(nèi)置對象))

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ù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容