形參(parameter):就是函數定義時的屬性名稱
實參(argument):實際調用函數時傳的值
如
function bark(dogName, dogWeight){}這是形參
bark("Fido",50);這是實參
局部變量(local):
全局變量(global):
1 作用域不同,
2 局部變量可以遮蔽全局變量
3 假如函數內不用var就對一個未聲明過的變量賦值,就會成爲新的全局變量
4 不同js文件中的全局變量會在同一個作用域
函數可以作爲值賦給變量,
function init(){
alert("aaa");
}
window.οnlοad=init;
//window.οnlοad=init用於頁面加載之後再執行該函數,實際上就是因爲這個函數作爲值傳給了window的onload屬性
對象:實質上就是屬性的集合
對象可以用dot notation和 [""] notation訪問,比如fido.weight和fido["weight"]都是在訪問weight屬性
對象可以改變屬性的值,賦值fido.weight = 27;
可以枚舉對象的所有屬性,用for-in循環,比如for prop in fido,不過prop遍歷的是屬性的名稱,fido[prop]纔是屬性的值
可以處理對象的數組,改變數組比改變屬性的值更復雜,用for循環可以循環處理數組。注意:假如返回或打印時需要顯示數組中的每一個值,要用+=,假如只需要數組的最後一個值,纔可以用=。
向函數傳入一個對象,就是把實參代入函數。
tip:要增加一個對象的新屬性,直接爲新屬性賦值即可(無需定義這個新屬性,fido.age=5);同理,直接刪除某個屬性,不止是刪除值,也會刪除這個屬性(delete fido.age,刪除成功後這個式子會返回true,刪除後再調用這個屬性會返回undefined)
向函數傳入對象
函數本身有形參,將實參傳入時,傳遞的是一個副本,不是實參本身,只是實參的一個pointer(指針),然後這個引用的副本傳遞給形參。
實參的調用不會影響函數的形參,但是形參在函數中的運算髮生改變時,實參調用函數時所進行的運算也會隨之改變
chaining串鏈
對象也可以有行爲method,就是對象裏面可以包含一個函數;對象裏面的函數引用對象內部的屬性,要用this;對象內部只能有匿名函數
function Movie(title,genre,rating,showtimes){
this.title=title;
this.genre=genre;
this.rating=rating;
this.showtimes=showtimes;
this.getNextShowing = function (){
var now = new Date().getTime();
for (var i=0;i<this.showtimes.length;i++){
var showtime=getTimeFromString(this.showtimes[i]);
if((showtime-now)>0){
return "Next showing of " + this.title + " is " + this.showtimes[i];
}
}
};
}
alert(banzaiMovie.getNextShowing());
中間省略了一段,函數作爲對象屬性之一(方法)時,調用其實是調用對象這一個屬性(方法)。
構造函數(constructor):規定好對象的各屬性的初始值;只要new object("property", "property"),就可以源源不斷調用這個構造的函數,不需要每次都去創建數組。
Object |
window(全局對象) |
document |
element |
property |
location status inload document |
domain(提供文檔服務的域) title URL |
innerHTML childElementCount firstChild |
Method |
alert prompt open close setTimeout setInterval |
getElementById getElementsByTagName getElementsByClassName
createElement |
appendChild insertBefore setAttribute getAttribute |