函數(shù)
函數(shù)就是封裝了一段可被重復(fù)調(diào)用執(zhí)行的代碼塊缔刹。通過此代碼塊可以實(shí)現(xiàn)大量代碼的重復(fù)使用。
創(chuàng)建函數(shù)
一劣针、聲明函數(shù)
function 函數(shù)名(形參校镐,....) {? ? 函數(shù)體代碼}
注:function 是聲明函數(shù)的關(guān)鍵字,必須小寫。
二捺典、匿名函數(shù)
var? 變量 = function(){? }
三鸟廓、箭頭函數(shù)
var 變量=(只有一個參數(shù)可不寫)=>{只有一行代碼可以不寫大括號};
調(diào)用函數(shù)?
函數(shù)名(實(shí)參襟己,....)引谜;通過調(diào)用函數(shù)名來執(zhí)行函數(shù)體代碼
形參:函數(shù)定義時設(shè)置接收調(diào)用時傳入
實(shí)參:函數(shù)調(diào)用時傳入小括號內(nèi)的真實(shí)數(shù)據(jù)
注:函數(shù)形參和實(shí)參數(shù)量不匹配時則
(1)實(shí)參個數(shù)大于形參:只取到形參的個數(shù)‘
(2)實(shí)參個數(shù)小于形參:多的形參定義為undefined,結(jié)果為NaN擎浴。
函數(shù)的封裝
函數(shù)的封裝是把一個或者多個功能通過函數(shù)的方式封裝起來员咽,對外只提供一個簡單的函數(shù)接口。
return 關(guān)鍵字
在使用 return 語句時贮预,函數(shù)會停止執(zhí)行贝室,并返回指定的值,如果函數(shù)沒有 return 仿吞,返回的值是 undefined滑频,return 之后的代碼將不再執(zhí)行(只可在函數(shù)體中使用)。
break ,continue ,return 的區(qū)別
break :結(jié)束當(dāng)前的循環(huán)體(如 for唤冈、while)峡迷。
continue :跳出本次循環(huán),繼續(xù)執(zhí)行下次循環(huán)(如 for你虹、while)绘搞。
return :不僅可以退出循環(huán)彤避,還能夠返回 return 語句中的值,同時還可以結(jié)束當(dāng)前的函數(shù)體內(nèi)的代碼看杭。
數(shù)組
數(shù)組的概念
數(shù)組可以把一組相關(guān)的數(shù)據(jù)一起存放忠藤,并提供方便的訪問(獲取)方式楼雹。
數(shù)組是指一組數(shù)據(jù)的集合模孩,其中的每個數(shù)據(jù)被稱作元素,在數(shù)組中可以存放任意類型的元素贮缅。數(shù)組是一種將一組數(shù)據(jù)存儲在單個變量名下的優(yōu)雅方式榨咐。
創(chuàng)建數(shù)組
一、利用? new 創(chuàng)建數(shù)組 :
var 數(shù)組名 = new Array() 谴供;
注意?: Array () 块茁,A 要大寫 .
二、利用數(shù)組字面量創(chuàng)建數(shù)組:
var? 數(shù)組名 = [ ]桂肌;
例如:var 數(shù)組名 = ['小白','小黑','大黃','瑞奇'];
(1)數(shù)組的字面量是方括號 [ ]
(2)聲明數(shù)組并賦值稱為數(shù)組的初始化
(3)這種字面量方式也是我們以后最多使用的方式
獲取數(shù)組中的元素
索引 (下標(biāo)) :用來訪問數(shù)組元素的序號(數(shù)組下標(biāo)從 0 開始)数焊。
數(shù)組可以通過索引來訪問、設(shè)置崎场、修改對應(yīng)的數(shù)組元素佩耳,
可以通過“**數(shù)組名[索引]**”的形式來獲取數(shù)組中的元素。
注意:如果訪問時數(shù)組沒有和索引值對應(yīng)的元素谭跨,則得到的值是undefined
遍歷數(shù)組
數(shù)組遍歷: 把數(shù)組中的每個元素從頭到尾都訪問一次(類似學(xué)生的點(diǎn)名)干厚。
可以通過 for 循環(huán)索引遍歷數(shù)組中的每一項(xiàng)。
例如:
var arr = ['red','green', 'blue'];
for(var i = 0; i < arr.length; i++){? ??
console.log(arrStus[i]);
}
數(shù)組的長度:默認(rèn)情況下表示數(shù)組中元素的個數(shù)
使用“數(shù)組名.length”可以訪問數(shù)組元素的數(shù)量(數(shù)組長度)螃宙。
注意:
(1)此處數(shù)組的長度是數(shù)組元素的個數(shù) 蛮瞄,不要和數(shù)組的索引號混淆。
(2)當(dāng)我們數(shù)組里面的元素個數(shù)發(fā)生了變化谆扎,這個 length 屬性跟著一起變化挂捅,數(shù)組的length屬性可以被修改:
(3)如果設(shè)置的length屬性值大于數(shù)組的元素個數(shù),則會在數(shù)組末尾出現(xiàn)空白元素燕酷;
(4)如果設(shè)置的length屬性值小于數(shù)組的元素個數(shù)籍凝,則會把超過該值的數(shù)組元素刪除
數(shù)組添加元素
數(shù)組中可以通過以下方式在數(shù)組的末尾插入新元素: 數(shù)組[ 數(shù)組.length ] = 新數(shù)據(jù);
也可以通過 數(shù)組= fruits.push('Orange');添加元素到數(shù)組的末尾。
對象
在 JavaScript 中苗缩,對象是一組無序的相關(guān)屬性和方法的集合,所有的事物都是對象声诸,例如字符串酱讶、數(shù)值、數(shù)組彼乌、函數(shù)等泻肯。 對象是由屬性和方法組成的渊迁。
屬性:事物的特征,在對象中用屬性來表示(常用名詞)
方法:事物的行為灶挟,在對象中用方法來表示(常用動詞)
創(chuàng)建對象的三種方式
一琉朽、使用對象字面量創(chuàng)建對象:
?就是花括號 { } 里面包含了表達(dá)這個具體事物(對象)的屬性和方法;
{ } 里面采取鍵值對的形式表示稚铣;
鍵:相當(dāng)于屬性名
值:相當(dāng)于屬性值箱叁,可以是任意類型的值(數(shù)字類型、字符串類型惕医、布爾類型耕漱,函數(shù)類型等)
對象的使用
對象的屬性
對象中存儲具體數(shù)據(jù)的 "鍵值對"中的 "鍵"稱為對象的屬性,即對象中存儲具體數(shù)據(jù)的項(xiàng)
對象的方法
對象中存儲函數(shù)的 "鍵值對"中的 "鍵"稱為對象的方法抬伺,即對象中存儲函數(shù)的項(xiàng)
訪問對象的屬性
對象里面的屬性調(diào)用 : 對象.屬性名 螟够,這個小點(diǎn) . 就理解為“ 的 ”?
對象里面屬性的另一種調(diào)用方式 : 對象[‘屬性名’],注意方括號里面的屬性必須加引號? ? ?
調(diào)用對象的方法
對象里面的方法調(diào)用:對象.方法名() 峡钓,注意這個方法名字后面一定加括號
變量妓笙、屬性、函數(shù)能岩、方法總結(jié)
屬性是對象的一部分寞宫,而變量不是對象的一部分,變量是單獨(dú)存儲數(shù)據(jù)的容器
變量:單獨(dú)聲明賦值捧灰,單獨(dú)存在
屬性:對象里面的變量稱為屬性淆九,不需要聲明,用來描述該對象的特征
二毛俏、利用 new Object 創(chuàng)建對象
創(chuàng)建空對象
varandy=newObect();
通過內(nèi)置構(gòu)造函數(shù)Object創(chuàng)建對象炭庙,此時andy變量已經(jīng)保存了創(chuàng)建出來的空對象
給空對象添加屬性和方法
通過對象操作屬性和方法的方式,來為對象增加屬性和方法
注意:
Object() :第一個字母大寫?
new Object() :需要 new 關(guān)鍵字
使用的格式:對象.屬性 =? 值;? ?
三煌寇、利用構(gòu)造函數(shù)創(chuàng)建對象
構(gòu)造函數(shù)
構(gòu)造函數(shù):是一種特殊的函數(shù)焕蹄,主要用來初始化對象,即為對象成員變量賦初始值阀溶,它總與 new 運(yùn)算符一起使用腻脏。我們可以把對象中一些公共的屬性和方法抽取出來,然后封裝到這個函數(shù)里面银锻。
構(gòu)造函數(shù)的封裝格式:
function 構(gòu)造函數(shù)名(形參1,形參2,形參3) {? ?
?this.屬性名1 = 參數(shù)1;? ?
?this.屬性名2 = 參數(shù)2;??
? this.屬性名3 = 參數(shù)3;? ?
?this.方法名 = 函數(shù)體;
}
構(gòu)造函數(shù)的調(diào)用格式
var obj = new 構(gòu)造函數(shù)名(實(shí)參1永品,實(shí)參2,實(shí)參3)
以上代碼中击纬,obj即接收到構(gòu)造函數(shù)創(chuàng)建出來的對象鼎姐。
注意事項(xiàng)
(1)構(gòu)造函數(shù)約定首字母大寫。
(2)函數(shù)內(nèi)的屬性和方法前面需要添加 this ,表示當(dāng)前對象的屬性和方法炕桨。
(3)構(gòu)造函數(shù)中不需要 return 返回結(jié)果饭尝。
(4)當(dāng)我們創(chuàng)建對象的時候,必須用 new 來調(diào)用構(gòu)造函數(shù)献宫。
其他
構(gòu)造函數(shù)钥平,如 Stars(),抽取了對象的公共部分姊途,封裝到了函數(shù)里面涉瘾,它泛指某一大類(class)創(chuàng)建對象,如 new Stars()吭净,特指某一個睡汹,通過 new 關(guān)鍵字創(chuàng)建對象的過程我們也稱為對象實(shí)例化。
new關(guān)鍵字的作用
在構(gòu)造函數(shù)代碼開始執(zhí)行之前寂殉,創(chuàng)建一個空對象囚巴;
修改this的指向,把this指向創(chuàng)建出來的空對象友扰;
執(zhí)行函數(shù)的代碼彤叉;
在函數(shù)完成之后,返回this---即創(chuàng)建出來的對象村怪;
?遍歷對象
for...in 語句用于對數(shù)組或者對象的屬性進(jìn)行循環(huán)操作秽浇。
其語法如下:
for (變量 in 對象名字) {? ? // 在此執(zhí)行代碼}
語法中的變量是自定義的,它需要符合命名規(guī)范甚负,通常我們會將這個變量寫為 k 或者 key柬焕。
for (var k in obj) {?
?? console.log(k);? ? ? // 這里的 k 是屬性名? ?
?console.log(obj[k]); // 這里的 obj[k] 是屬性值
}