屬性為專屬於物件的變數 (variable) ,方法則是物件專屬的函數 (function) ,我們舉一例如下
function Demo() { this.a; this.b; this.do_something = do_something; function do_something() { return this.a + this.b; } } t = new Demo(); t.a = 11; t.b = 22; document.write(t.do_something());
Demo 為物件名稱,後面同樣接小括弧,小括弧中為參數列 (parameter list) ,沒有參數 (parameter) 的話,小括弧就留空
下面兩行定義兩個屬性 this.a 與 this.b , this 為關鍵字之一,用於定義物件中的屬性與方法名稱
如果沒有用 this , a 與 b 就只是 Demo() 裡的區域變數 (local variable) 。
function Demo() {
下面兩行定義兩個屬性 this.a 與 this.b , this 為關鍵字之一,用於定義物件中的屬性與方法名稱
this.a; this.b;
如果沒有用 this , a 與 b 就只是 Demo() 裡的區域變數 (local variable) 。
所以定義方法就得先用 this 定義方法名稱,接著再用 function 定義方法內容
這個範例很簡單,我們建立 Demo 物件後,設定屬性 a 為 11 , b 為 22 ,然後在 docment 的 write() 裡呼叫 do_something() 。下面是用來載入的 HTML 文件
以下的 HTML 文件載入
this.do_something = do_something; function do_something() { return this.a + this.b; }
這個範例很簡單,我們建立 Demo 物件後,設定屬性 a 為 11 , b 為 22 ,然後在 docment 的 write() 裡呼叫 do_something() 。下面是用來載入的 HTML 文件
以下的 HTML 文件載入
但是方法的定義寫在物件定義裡有個小缺點,就是物件必須帶著方法的程式碼走,當建立的物件越多,每個物件都帶著相同重複的方法程式碼,這樣其實滿耗記憶體的。其實我們可以把方法從物件定義裡取出來,然後在其他地方用預設的 prototype 性質定義方法,像是上例可改成
function Demo() { this.a; this.b; } Demo.prototype.do_something = function() { return this.a + this.b; } t = new Demo(); t.a = 11; t.b = 22; document.write(t.do_something());
這樣物件就只會裝有屬性,方法只在呼叫時才會取得連結,好處就是可以節省記憶體空間。
Reference : http://pydoing.blogspot.tw/2012/12/JavaScript-Object.html
沒有留言:
張貼留言