基於物件的JavaScript語言(轉)

amyz發表於2007-08-12
基於物件的JavaScript語言(轉)[@more@]

  JavaScript語言是基於物件的(Object-Based),而不是物件導向的(object-oriented)。之所以說它是一門基於物件的語言,主要是因為它沒有提供象抽象、繼承、過載等有關面嚮物件語言的許多功能。而是把其它語言所建立的複雜物件統一起來,從而形成一個非常強大的物件系統。

  雖然JavaScript語言是一門基於物件的,但它還是具有一些物件導向的基本特徵。它可以根據需要建立自己的物件,從而進一步擴大JavaScript的應用範圍,增強編寫功能強大的Web文件。

  一、物件的基礎知識

  1、物件的基本結構

  JavaScript中的物件是由屬性(properties)和方法(methods)兩個基本的元素的構成的。前者是物件在實施其所需要行為的過程中,實現資訊的裝載單位,從而與變數相關聯;後者是指物件能夠按照設計者的意圖而被執行,從而與特定的函式相聯。

  2、引用物件的途徑

  一個物件要真正地被使用,可採用以下幾種方式獲得:

  o 引用JavaScript內部物件;

  o 由瀏覽器環境中提供;

  o 建立新物件。

  這就是說一個物件在被引用之前,這個物件必須存在,否則引用將毫無意義,而出現錯誤資訊。從上面中我們可以看出JavaScript引用物件可透過三種方式獲取。要麼建立新的物件,要麼利用現存的物件。

  3、有關物件操作語句

  JavaScript不是一純物件導向的語言,它設有提供面嚮物件語言的許多功能,因此JavaScript設計者之所以把它你“基於物件”而不是物件導向的語言,在JavaScript中提供了幾個用於操作物件的語句和關鍵字及運算子。

  (1) For...in語句

  格式如下:

  For(物件屬性名 in 已知物件名)

  說明:

  o 該語句的功能是用於對已知物件的所有屬性進行操作的控制迴圈。它是將一個已知物件的所有屬性反覆置給一個變數;而不是使用計數器來實現的。

  o 該語句的優點就是無需知道物件中屬性的個數即可進行操作。

  例:下列函式是顯示陣列中的內容:

  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) this關鍵字

  this是對當前的引用,在JavaScript由於物件的引用是多層次,多方位的,往往一個物件的引用又需要對另一個物件的引用,而另一個物件有可能又要引用另一個物件,這樣有可能造成混亂,最後自己已不知道現在引用的那一個物件,為此JavaScript提供了一個用於將物件指定當前物件的語句this。

  (4) New運算子

  雖然在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[1]=“昆明市”

  university[2]="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))

  二、常用物件的屬性和方法

  JavaScript為我們提供了一些非常有用的常用內部物件和方法。使用者不需要用指令碼來實現這些功能。這正是基於物件程式設計的真正目的。

  在JavaScript提供了string(字串)、math(數值計算)和Date(日期)三種物件和其它一些相關的方法。從而為程式設計人員快速開發強大的指令碼程式提供了非常有利的條件。

  1、常用內部物件

  在JavaScript中對於物件屬性與方法的引用,有兩種情況:其一是說該物件是靜態物件,即在引用該物件的屬性或方法時不需要為它建立例項;而另一種物件則在引用它的物件或方法是必須為它建立一個例項,即該物件是動態物件。

  對JavaScript內部物件的引用,以是緊緊圍繞著它的屬性與方法進行的。因而明確物件的靜動性對於掌握和理解JavaScript內部物件是具有非常重要的意義。

  1)、串物件

  o string物件:內部靜態性。

  o 訪問properties和methods時,可使用(.)運算子實現。

  o 基本使用格式:objectName.prop/methods

  (1)串物件的屬性

  該物件只有一個屬性,即length。它表明了字串中的字元個數,包括所有符號。

  例:

  mytest="This is a JavaScript"

  mystringlength=mytest.length

  最後mystringlength返回mytest字串的長度為20。

  (2)串物件的方法

  string物件的方法共有19個。主要用於有關字串在Web頁面中的顯示、字型大小、字型顏色、字元的搜尋以及字元的大小寫轉換。

  其主要方法如下:

  o 錨點anchor():該方法建立如用Html文件中一樣的anchor標記。使用anchor如用Html中(A Name="")一樣。透過下列格式訪問:string.anchor(anchorName)。

  o 有關字元顯示的控制方法

  big字型顯示, Italics()斜體字顯示,bold()粗體字顯示,blink()字元閃爍顯示,small()字元用小體字顯示,fixed()固定高亮字顯示、fontsize(size)控制字型大小等。

  o 字型顏色方法;fontcolor(color)

  o 字串大小寫轉換

  toLowerCase()-小寫轉換,toUpperCase()大寫轉換。下列把一個給定的串分別轉換成大寫和小寫格式:

  string=stringValue.toUpperCase和string=stringValue.toLowerCase。

  o 字元搜尋:indexOf[charactor,fromIndex]

  從指定formIndtx位置開始搜尋charactor第一次出現的位置。

  返回字串的一部分字串:substring(start,end)

  從start開始到end的字元全部返回。

  2)、算術函式的math物件

  功能:提供除加、減、乘、除以外的一引些自述運算。如對數,平方根等 。

  靜動性:靜態物件

  (1)主要屬性

  math中提供了6個屬性,它們是數學中經常用到的常數E、以10為底的自然對數LN10、以2為底的自然對數LN2、3.14159的PI、1/2的平方根SQRT1-2,2的平方根為SQRT2。

  (2)主要方法

  絕對值:abs()

  正弦餘弦值:sin(),cos()

  反正弦反餘弦 :asin(), acos()

  正切反正切:tan(),atan()

  四捨五入:round()

  平方根:sqrt()

  基於幾方次的值:Pow(base,exponent)

  ...

  3)、日期及時間物件

  功能:提供一個有關日期和時間的物件。

  靜動性:動態性,即必須使用New運算子建立一個例項。例:

  MyDate=New Date()

  Date物件沒有提供直接訪問的屬性。只具有獲取和設定日期和時間的方法。

  日期起始值:1770年1月1日00:00:00。

  1. 獲取日期的時間方法

  getYear(): 返回年數

  getMonth():返回當月號數

  getDate(): 返回當日號數

  getDay():返回星期幾

  getHours():返回小時數

  getMintes(:返回分鐘數

  getSeconds():返回秒數

  getTime() : 返回毫秒數

  (2)設定日期和時間:

  setYear();設定年

  setDate():設定當月號數

  setMonth():設定當月份數

  setHours():設定小時數

  setMintes():設定分鐘數

  setSeconds():設定秒數

  setTime ():設定毫秒數

  ...

  2、JavaScript中的系統函式

  JavaScript中的系統函式又稱內部方法。它提供了與任何物件無關的系統函式,使用這些函式不需建立任何例項,可直接用。

  1.返回字串表示式中的值:

  方法名:eval(字串表示式),例:

  test=eval("8+9+5/2");

  2. 返回字串ASCI碼:

  方法名:unEscape (string)

  3.返回字元的編碼:

  方法名:escape(character)

  4.返回實數:

  parseFloat(floustring);

  5.返回不同進位制的數:

  parseInt(numbestring ,rad.X)

  其中radix是數的進位制,numbs字串數

  三、範例

  下面是一個時鐘顯示的JavaScript文件。在文件中用了非常多的函式。

  Test4_1.htm

  

時鐘

form   時鐘

 

VALUE style="background-color: rgb(192,192,192)">

  本講介紹了基於物件的JavaScript中常用內部物件屬性、方法的使用。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950436/,如需轉載,請註明出處,否則將追究法律責任。

相關文章