2009年2月2日

set, get

用物件寫程式 | 取用成員 | 繼承 | set, get
get | set | __defineGetter__() | __defineSetter__() | __lookupGetter__() | __lookupSetter__()

此段講的設值器(setter)與取值器(getter),IE 沒有支援;Firefox, Safari, Chrome 可以正確執行。IE8 開始有支援 __defineGetter__(), __defineSetter__(), __lookupGetter__, __lookupSetter__。IE8 未測試,下次補測。

get

在物件中,宣告一個特徵與函式的連結,讀取此特徵時,會呼用該函式。其語法是:

get 特徵名 [函式名] () { 指令集 }

函式沒有參數。可選擇性的設函式名。在 Firefox 可以設函式名,但是 Safari, Chrome 會導致失敗,所以不能設函式名。建議不設。

  • 請注意:使用時,不要加函式的括號,例如 Jolin.info(),會導致錯誤。
  • 筆者曾嘗試將 get 用在 物件製造器,但沒有成功。
set

在物件中,宣告一個特徵與函式的連結,設定此特徵時,會呼用該函式。其語法是:

set 特徵名 [函式名] ( 值 ) { 指令集 }

可選擇性的設函式名。在 Firefox 可以設函式名,但是 Safari, Chrome 會導致失敗,所以不能設函式名。建議不設。

函式只能有一個參數。在設定特徵時,等號右邊的值會傳給參數。

下例是華氏與攝氏溫度的轉換。

__defineGetter__()

宣告取值器。其語法是:

物件.__defineGetter__( 特徵名字串, 函式 )

__defineSetter__()

宣告設值器。其語法是:

物件.__defineSetter__( 特徵名字串, 函式 )

下面的範例,動態的增加已存在的物件實體之設值器。

也可以接在 prototype 後使用。如此可以增加物件型態及所有物件實體的取值器與設值器。

__lookupGetter__()

傳回取值器的函式。其語法是:

物件實體.__lookupGetter__( 取值器字串 )

請勿將設值器用在此。

__lookupSetter__()

傳回設值器的函式。其語法是:

物件實體.__lookupSetter__( 設值器字串 )

請勿將取值器用在此。

delete

可以用 delete 刪除設值器與取值器。


©2008-2009 by ant2legs, All Rights Reserved. ant2legs 擁有其製作的文章,圖片與程式的著作權,所有權利保留。