如何用面向對象的方法理解JavaScript函數和對象

形參(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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章