對象
JavaScript語言是基於對象的(Object-Based),而不是物件導向的(object-oriented)。之所以說它是一門基於對象的語言,主要是因為它沒有提供象抽象、繼承、重載等有關物件導向語言的許多功能。而是把其它語言所建立的複雜物件統一起來,從而形成一個非常強大的對象系統。
雖然JavaScript語言是一門基於對象的,但它還是具有一些物件導向的基本特徵。它可以根據需要建立自己的對象,從而進一步擴大JavaScript的應用範圍,增強編寫功能強大的Web文檔案。
一、對象的基礎知識
1、對象的基本結構
JavaScript中的對象是由屬性(properties)和方法(methods)兩個基本的元素的構成的。前者是對象在實施其所需要行為的過程中,實現資訊的裝載單位,從而與變數相關聯;後者是指對象能夠按照設計者的意圖而被執行,從而與特定的函數相聯。
2、引用對象的途徑
一個對象要真正地被使用,可採用以下幾種方式獲得:
引用JavaScript內部對象;
由瀏覽器環境中提供;
建立新對象。
這就是說一個對象在被引用之前,這個對象必須存在,否則引用將毫無意義,而出現錯誤資訊。從上面中我們可以看出JavaScript引用對象可通過三種方式擷取。要麼建立新的對象,要麼利用現存的對象。
3、有關對象動作陳述式
JavaScript不是一純物件導向的語言,它設有提供物件導向語言的許多功能,因此JavaScript設計者之所以把它你“基於對象”而不是物件導向的語言,在JavaScript中提供了幾個用於操作對象的語句和關鍵詞及運算子。
1)、For...in語句
格式如下:
For(對象屬性名稱 in 已知對象名)
說明:
該語句的功能是用於對已知對象的所有屬性進行操作的控制迴圈。它是將一個已知對象的所有屬性反覆置給一個變數;而不是使用計數器來實現的。
該語句的優點就是無需知道對象中屬性的個數即可進行操作。
例:下列函數是顯示數組中的內容:
Function showData(object)
for (var X=0; X<30;X++)
document.write(object[i]);
該函數是通過數組下標順序值,來訪問每個對象的屬性,使用這種方式首先必須知道數組的下標值,否則若超出範圍,則就會發生錯誤。而使For...in語句,則根本不需要知道對象屬性的個數,見下:
Function showData(object)
for(var prop in object)
document.write(object[prop]);
使用該函數時,在迴圈體中,For自動將的屬性取出來,直到最後為此。
2)、with語句
使用該語句的意思是:在該語句體內,任何對變數的引用被認為是這個對象的屬性,以節省一些代碼。
with object{
...}
所有在with語句後的花括弧中的語句,都是在後面object對象的範圍的。
3)、his關鍵詞
this是對當前的引用,在JavaScript由於對象的引用是多層次,多方位的,往往一個對象的引用又需要對另一個對象的引用,而另一個對象有可能又要引用另一個對象,這樣有可能造成混亂,最後自己已不知道現在引用的那一個對象,為此JavaScript提供了一個用於將對象指定當前對象的語句this。
4)、ew運算子
雖然在JavaScript中對象的功能已經是非常強大的了。但更強大的是設計人員可以按照需求來建立自己的對象,以滿足某一特定的要求。使用New運算子可以建立一個新的對象。其建立對象使用如下格式:
Newobject=NEW Object(Parameters table);
其中Newobject建立的新對象:object是已經存在的對象; parameters table參數表;new是JavaScript中的命令語句。
如建立一個日期新對象
newData=New Data()
birthday=New Data (December 12.1998)
之後就可使NewData、birthday作為一個新的日期對象了。
4、對象屬性的引用
對象屬性的引用可由下列三種方式之一實現:
(1)使用點(.)運算子
university.Name=“雲南省”
university.city=“昆明市”
university.Date="1999"
其中university是一個已經存在的對象,Name、City、Date是它的三個屬性,並通過操作對其賦值。
(2)通過對象的下標實現引用
university[0]=“雲南”
university=“昆明市”
university="1999"
通過數組形式的訪問屬性,可以使用迴圈操作擷取其值。
function showunievsity(object)
for (var j=0;j<2; j++)
document.write(object[j])
若採用For...in則可以不知其屬性的個數後就可以實現:
Function showmy(object)
for (var prop in this)
docament.write(this[prop]);
(3)通過字串的形式實現
university["Name"]=“雲南”
university["City"]=“昆明市”
university["Date"]="1999"
5、對象的方法的引用
在JavaScript中對象方法的引用是非常簡單的。
ObjectName.methods()
實際上methods()=FunctionName方法實質上是一個函數。 如引用university對象中的showmy()方法,則可使用:
document.write (university.showmy())
或:document.write(university)
如引用math內部對象中cos()的方法
則:
with(math)
document.write(cos(35));
document.write(cos(80));
若不使用with則引用時相對要複雜些:
document.write(Math.cos(35))
document.write(math.sin(80))