DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> javascript初學者:全面學習對象概念
javascript初學者:全面學習對象概念
編輯:關於JavaScript     

本文介紹了幾乎所有關於對象的基本概念,什麼是對象,如何創建對象,對象的屬性的設置和讀取,刪除屬性的方法,構造函數,對象原型,父類,子類,繼承等等。


1.對象
* 對象是一種復合數據類型,它們將多個數據值集中在一個單元中,而且運行使用名字來存取這些值。解釋對象的另一種方式是,對象是一個無序的屬性集合,每個屬性都有自己的名字和值。存儲在對象中的已命名的值可以是數字和字符串這樣的原始值,也可以是對象。
*/
var o = new Object();

2.對象直接量創建對象
* 對象直接量由屬性說明列表構成,列表包含在大括號中,其中的屬性說明由逗號隔開。
* 對象直接量中的每個屬性說明都由屬性名加上冒號和屬性值構成。
*/
var zhangsan = {name:"zhangsan", age:34, married:true};
window.alert(typeof zhangsan); //輸出object

3.屬性的讀取和設置
* 對象的屬性通過點號運算符讀取和設置。對象的新屬性可以通過直接創建。
*/
window.alert(zhangsan.car); //輸出undefined
zhangsan.car="BMW"; //直接賦值
window.alert(zhangsan.car); //輸出BMW

 4.屬性的枚舉
* 通過for循環枚舉每一個屬性,順序不能保證固定。
* 注意枚舉出的是屬性名稱,並不是屬性值。
*/
var values = "";
for(var v in zhangsan)values += v+"\n"; //枚舉每一個屬性
window.alert(values);

5.屬性的刪除使用delete,如delete zhangsan.car
*/

6.構造函數
* 構造函數是具有兩個特性的javascript函數:
* (1)它由new 運算符調用;
* (2)傳遞給它的是一個對新創建的空對象的應用,將該引用作為關鍵字this的值,而且它還要對新創建的對象進行適當的初始化。
* 記住:構造函數只是初始化對象,並不返回新創建的對象。
*/
function Rectangle(w, h){
this.width = w;
this.height = h;
}
var ret1 = new Rectangle(2, 1);
//注意構造函數是如何使用它的參數來初始化this關鍵字所引用的對象的屬性

7.對象的方法
* 所謂方法,就是通過對象調用的javascript函數。我們知道,函數就是數值,它們所使用的名字沒有任何特殊之處,可以將函數賦給任何變量,甚至賦給一個對象的任何屬性,那麼這個屬性就是對象的方法了。
* 在對象的方法體內,關鍵字this的值就成了調用該方法的對象。
*/
function print(){}
ret1.print = print;

 8.關於this的討論
* 任何一個用作方法的函數都會得到一個額外的實際參數,即調用該函數的對象。由於方法通常是對那個對象執行某種操作,所以要表達函數作用於對象這一事實,最好采用方法的調用語法。
* 如rect.setSize(width, height);
* setSize(rect, width, height);
* 雖然這兩行代碼對對象rect執行相同的操作,但是第一行代碼在表達對象rect是操作的焦點(或者說操作的目標)這一觀點時顯然清楚得多。
*
* 雖然有區別地對待函數和方法比較有用,但實際上它們之間的差別並不大。回憶一下,函數是存儲在變量中的值,而那個變量也不過是全局對象的一個屬性。因此,當你調用一個函數時,實際上調用的是全局對象的一個方法。
* 在這樣的函數中,關鍵字this引用的是全局對象。所以函數和方法之間在技術上沒有差別,真正的差別在於設計和目的上,方法是用來對this對象進行操作的,而函數通常會是獨立的,並不需要使用this對象。
*/
(function f(){
var values = "";
for(var v in this)values += v + " ";
window.alert(values);
})(); //返回window對象的所有屬性和方法名稱

9.原型對象和繼承
* javascript每個對象都有原型對象,每個對象都繼承原型對象的所有屬性。
* 一個對象的原型是由創建並初始化該對象的構造函數定義的。javascript中的所有函數都有prototype屬性,它引用了一個對象。雖然原型對象初始化時是空的,
* 但是你在其中定義的任何屬性都會被該構造函數創建的所有對象繼承。
*
* 構造函數定義了對象的類,並初始化了類中狀態變量的屬性,如width和height。因為原型對象和構造函數關聯在一起,所以類的每個成員都從原型對象繼承了相同的屬性。
* 這說明原型對象是存放方法和其他常量屬性的理想場所。
*
* 注意,繼承是在查詢一個屬性值時自動發生的。屬性並非從原型對象復制到新的對象的,它們只不過看起來像是那些對象的屬性。這其中有兩點重要的含義。
* 一是使用原型對象可以大量減少每個對象對內存的需求量,因為對象可以繼承許多屬性。二是即使屬性在對象被創建之後才添加到它的原型對象中,對象也能夠繼承這些屬性。
*
* 每個類都有一個原型對象,這個原型對象都具有一套屬性。但是實際上卻有大量的類實例,每個實例都能繼承原型對象的屬性。由於一個原型對象能夠被多個對象繼承,所以javascript
* 必須強化讀寫屬性值之間的不對稱性。在讀對象o

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved