我們知道javscript是面向對像有語言,當然離不開對像操作.本文講解javascript創建對象.
從本質上講,創建物件的想法只是為了創建一個簡單的實體,這個實體包含了許多屬性和方法。
以下是一個物件建構器的例子:
function Person(name, age, colour) {
this.name = name;
this.age = age;這樣來呼叫Person建構器:
var somebody = new Person("Patrick", 22, "red");
或從使用者得到輸入數值:
var pName = prompt("What is your name?"); = prompt("How old are you this year?");
var pColour = prompt("What is your favourite colour?");
var somebody = new Person(pName, p5Person(pName, pAge, pscriptour);構造器,就像在Java中,都可以利用new關鍵字來進行呼叫。當一個person利用它的屬性{"Patrick", 22, "red"}被創建(或者說被構造)的時候,這些數值就可以訪問了,例如:
somebody.name, or somebody["name"] "Patrick"
somebody.age, or somebody["age"] 22
somebody.colour, or somebody["colour"] "red"
因為我們利用name增加了Personname,所以必須引用它們的屬性,所以必須透過名稱增加了Personname) ,這點在後面的程式碼中可以看到。如果我們使用數字,那麼我們就必須使用數字來引用,例如要用somebody[0],而不用somebody.name。
javascript的陣列和物件(如 forms,images,frames,…)都允許這兩種方法。
另外,數組和物件都有一個本質的屬性,即length(長度)。我們在編製程式的時候,可以這樣來使用它:objectName.length,它會傳回物件包含的元素或屬性的數量。
屬性同樣也可以從函數中來創建,這樣,你只需要增加一行到Person函數中就可以創建屬性了:
function Person(name, age, colour)
{
斯. age = age;
this.colour = colour;
this.birthYear = (new Date()).getYear() - this.age;
}
}
以上的Person函數定義了第四個屬性:它:一個Person的出生年。這裡要注意,這增加的行是呼叫一個內建的Date建構器,它傳回一個包含了目前日期和時間的Date物件。
這是一個非常懶惰的方法來存取一個Date變數。所以使用下面的程式碼會顯得更準確些,更有可讀性:
var today = new Date();
this.birthYear = today.getYear() - this.age;
當然,有許多方法來對javascript程式進行“壓縮”。透過插入物件到程式碼中,你就可以處理絕大多數的變數。
這個Date物件比起我們上面定義的Person物件來說更複雜,因為它包含了存取方法(accessor/get)以及操作方法(manipulator/set)。同時,增加簡單的物件方法到javascript是可能,以下是詳細的範例程式碼:
透過將物件重載重載.顯示出來。每當Person物件被引用為字串的時候,pringPerson傳回的數值就決定了該顯示什麼了。
上面腳本的輸出如下所示:
Patrick was born in 76
and is 22 years old.
Betty was born in 77
and is 21 years old.
〜 and is 21 years old.
[Patrick 〜 〜er〜〜〜.Patrick〜 er Patrick older 〜〼 1976年只用76來表示。所以你可能想增加「19」到這兩位數字的前面。不幸的是,「千年蟲」的問題使得你處理起來有點棘手。而不同的瀏覽器處理Date物件的getYear()方法是不同的。
Year(年份)
Navigator瀏覽器
IE 3.x瀏覽器
IE 4.x瀏覽器
你可以從上面表格中發現四位最新的瀏覽器支援1999年。不幸的是,老的瀏覽器處理年份的格式的時候給程式設計人員無盡的困惑。我常用的具體解決方法如下所示,與大家分享:
var thisYear = (new Date()).getYear();
thisYear = 1900 + (thisYear % 1900);
『將年份轉換位IE 3.x格式並且增加1900以獲得真實的年份(例如,2002年經過this Year%1900轉換位IE 3.x格式位元102,然後102再加上1900得到2002)。上面這兩個語句可以適用於從1900年到3799年的處理,現在看起來這麼長的時間是足夠使用了。但是,為了避免類似「千年蟲」問題,我們應該再找出更好的解決方案,在本教程中就不給了。另外,新的ECMA標準包含了一個名為getFullYear()的函數,它是傳回完整的年份格式,但這個函數只能由Navigator 4支持,在IE中是不能使用的。
最後對程式再做一點改進,我們可以修改People建構器以轉換年份為YYYY格式,具體程式碼如下:
this.birthYear = 1900 + (((new Date()).getYear() - this.age) % 1900);
在javascript中使用物件的能力通常被許多程式設計人員所忽略。但是從本教程中,你應該可以看到使用物件可以使程式設計師設計出更強大的應用程式來的。
更多相關文章請追蹤PHP中文網(www.php.cn)!