JavaScript教程–從入門到精通(四)

來源:互聯網
上載者:User

基於對象的javascript語言

  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
<html>
<head>
<style TYPE="text/css">
<style>
</style>
<title>時鐘</title>
<script LANGUAGE="javascript">
function showClock() {
}
function hideClock() {
}
var timerID = null
var timerRunning = false
function stopClock() {
if(timerRunning)
clearTimeout(timerID);
timerRunning = false
document.clock.face.value = "";
}
function showTime() {
var now = new Date();
var year = now.getYear();
var month = now.getMonth() + 1;
var date = now.getDate();
var hours = now.getHours();
var mins = now.getMinutes();
var secs = now.getSeconds();
var timeVal = "";
timeVal += ((hours <= 12) ? hours : hours - 12);
timeVal += ((mins < 10) ? ":0" : ":") + mins;
timeVal += ((secs <= 10) ? ":0" : ":") + secs;
timeVal += ((hours < 12) ? "AM" : "PM");
timeVal += ((month < 10) ? " on 0" : " on ") + month + "-";
timeVal += date + "-" + year;
document.clock.face.value = timeVal;
timerID = setTimeout("showTime()", 1000);
timerRunning = true
}
function startClock() {
stopClock();
showTime();
}
 
function windowOpener( indexnum ){
var loadpos="date.html"+"#"+indexnum;
controlWindow=window.open(loadpos,"date","toolbar=no,location=no,
directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,
width=620,height=400");
}
</script>
</head>
<body onLoad="startClock()" >
<p align="center"><big><span style="background-color: rgb(45,45,45)">
<font face="Arial">form</font> &nbsp; <font face="宋體">時鐘</font>
</span></big></p>
<p align="center"> </p>
<div align="center"><center>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><form NAME="clock" onSubmit="0">
<div align="center"><center><p><input TYPE="text" NAME="face" size="20"
VALUE style="background-color: rgb(192,192,192)"> </p>
</center></div>
</form>
</td>
</tr>
</table>
</center></div>
</body>
</html>
 
  本講介紹了基於對象的javascript中常用內部對象屬性、方法的使用。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/likaier/archive/2005/03/24/328877.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.