JavaScript基礎(chǔ)之對象與內(nèi)置對象

1、對象??
在 JavaScript 中,對象是一組無序的相關(guān)屬性和方法的集合,所有的事物都是對象,例如字符串、數(shù)值、數(shù)組、函數(shù)等。
對象是由屬性和方法組成的:
屬性:事物的特征,在對象中用屬性來表示(常用名詞)
方法:事物的行為,在對象中用方法來表示(常用動詞)
1.1、創(chuàng)建對象??
在 JavaScript 中,現(xiàn)階段我們可以采用三種方式創(chuàng)建對象(object):
利用字面量創(chuàng)建對象
利用?new Object創(chuàng)建對象
利用構(gòu)造函數(shù)創(chuàng)建對象
①利用字面量創(chuàng)建對象??
對象字面量:就是花括號?{ }
?里面包含了表達(dá)這個具體事物(對象)的屬性和方法
{ }
?里面采取鍵值對的形式表示
鍵:相當(dāng)于屬性名
值:相當(dāng)于屬性值,可以是任意類型的值(數(shù)字類型、字符串類型、布爾類型,函數(shù)類型等)
??對象的調(diào)用
對象里面的屬性調(diào)用 :?對象.屬性名?,這個小點 . 就理解為“?的?”
對象里面屬性的另一種調(diào)用方式 :?對象[‘屬性名’],注意方括號里面的屬性必須加引號,我們后面會用
對象里面的方法調(diào)用:對象.方法名()?,注意這個方法名字后面一定加括號
??變量、屬性、函數(shù)、方法總結(jié)
變量:單獨聲明賦值,單獨存在
屬性:對象里面的變量稱為屬性,不需要聲明,用來描述該對象的特征
函數(shù):單獨存在的,通過==“函數(shù)名()”==的方式就可以調(diào)用
方法:對象里面的函數(shù)稱為方法,方法不需要聲明,使用==“對象.方法名()”==的方式就可以調(diào)用,方法用來描述該對象的行為和功能。
②利用 new Object 創(chuàng)建對象??
跟之前的?new Array()
?原理一致:var 對象名 = new Object();
使用的格式:對象.屬性 = 值
③利用構(gòu)造函數(shù)創(chuàng)建對象??
構(gòu)造函數(shù)?:是一種特殊的函數(shù),主要用來初始化對象,即為對象成員變量賦初始值,它總與?new?運算符一起使用。我們可以把對象中一些公共的屬性和方法抽取出來,然后封裝到這個函數(shù)里面。
在 js 中,使用構(gòu)造函數(shù)要時要注意以下兩點:
構(gòu)造函數(shù)用于創(chuàng)建某一類對象,其首字母要大寫
構(gòu)造函數(shù)要和 new 一起使用才有意義
構(gòu)造函數(shù)名字首字母要大寫
函數(shù)內(nèi)的屬性和方法前面需要添加?this?,表示當(dāng)前對象的屬性和方法。
構(gòu)造函數(shù)中不需要 return?返回結(jié)果。
當(dāng)我們創(chuàng)建對象的時候,必須用 new?來調(diào)用構(gòu)造函數(shù)
??new關(guān)鍵字
new 在執(zhí)行時會做四件事:
在內(nèi)存中創(chuàng)建一個新的空對象。
讓 this 指向這個新的對象。
執(zhí)行構(gòu)造函數(shù)里面的代碼,給這個新對象添加屬性和方法
返回這個新對象(所以構(gòu)造函數(shù)里面不需要return)
1.2、遍歷對象的屬性??
for...in
?語句用于對數(shù)組或者對象的屬性進(jìn)行循環(huán)操作
語法中的變量是自定義的,它需要符合命名規(guī)范,通常我們會將這個變量寫為?k?或者?key。

2、內(nèi)置對象??
JavaScript 中的對象分為3種:自定義對象 、內(nèi)置對象、 瀏覽器對象
內(nèi)置對象就是指 JS 語言自帶的一些對象,這些對象供開發(fā)者使用,并提供了一些常用的或是最基本而必要的功能
JavaScript 提供了多個內(nèi)置對象:Math、 Date 、Array、String等

3.Math對象??
Math 對象不是構(gòu)造函數(shù),它具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法。跟數(shù)學(xué)相關(guān)的運算(求絕對值,取整、最大值等)可以使用 Math 中的成員。
注意:上面的方法必須帶括號
練習(xí):封裝自己的數(shù)學(xué)對象
利用對象封裝自己的數(shù)學(xué)對象,里面有PI 最大值 和最小值
Math絕對值和三個取整方法??
Math.abs()
?取絕對值三個取整方法:
Math.floor()
?: 向下取整Math.ceil()
?: 向上取整Matg.round()
?: 四舍五入,其他數(shù)字都是四舍五入,但是5特殊,它往大了取

4.隨機(jī)數(shù)方法random()??
random()?方法可以隨機(jī)返回一個小數(shù),其取值范圍是 [0,1),左閉右開 0 <= x < 1
得到一個兩數(shù)之間的隨機(jī)整數(shù),包括第一個數(shù),不包括第二個數(shù)
1.隨機(jī)點名
2.猜數(shù)字游戲


5、Data()日期對象??
Date 對象和 Math 對象不一樣,他是一個構(gòu)造函數(shù),所以我們需要實例化后才能使用
Date 實例用來處理日期和時間
獲取當(dāng)前時間必須實例化??
Date()構(gòu)造函數(shù)的參數(shù)??
如果括號里面有時間,就返回參數(shù)里面的時間。例如日期格式字符串為?‘2019-5-1’
,可以寫成new Date('2019-5-1')
?或者?new Date('2019/5/1')
如果Date()不寫參數(shù),就返回當(dāng)前時間
如果Date()里面寫參數(shù),就返回括號里面輸入的時間
日期格式化??

獲取日期的總的毫秒形式??
date.valueOf()
?:得到現(xiàn)在時間距離1970.1.1總的毫秒數(shù)date.getTime()
?:得到現(xiàn)在時間距離1970.1.1總的毫秒數(shù)

6、數(shù)組對象??
數(shù)組對象的創(chuàng)建??
創(chuàng)建數(shù)組對象的兩種方式
字面量方式
new Array()
檢測是否為數(shù)組??
instanceof?運算符,可以判斷一個對象是否屬于某種類型
Array.isArray()
?用于判斷一個對象是否為數(shù)組,isArray() 是 HTML5 中提供的方法
添加刪除數(shù)組元素??

數(shù)組排序??

數(shù)組索引??

數(shù)組轉(zhuǎn)化為字符串??
