2010-07-08 103 views
11

是否可以在JavaScript對象上創建屬性,該對象的行爲與C#中的屬性類似。創建類似C#屬性的javascript屬性

示例: 我已經使用dojo創建了自動調整大小的textarea小部件。爲了從我的小部件中獲得「value」屬性,我已經連接到了onchange事件,並且每次textarea的值發生變化時我都會設置一個變量。

有沒有辦法做到這一點,而無需掛鉤onchange事件。

編輯

換句話說,就是可以使用JavaScript編寫的東西,行爲像getter和/或setter方法。

回答

15

有可能在ECMAScript中5的實施,其中包括recent versions of all major browsers。 ECMAScript 5規範增加了標準化的getter和setter。其中一個怪癖是IE 8具有此功能,但僅限於DOM節點。這是語法的樣子:

var obj = {}; 

Object.defineProperty(obj, "value", { 
    get: function() { 
     return this.val; 
    }, 
    set: function(val) { 
     this.val = val; 
    } 
}); 

同時也出現了對於稍後也由WebKit和歌劇採用但這無法在IE瀏覽器很長一段時間的專有實現在Mozilla getter和setter。

-1

我不確定你在問什麼。您可以隨時獲取textarea的值,而無需使用onchange事件。你必須得到對象然後看看value屬性。

例如,如果你的文字區域有一個id = 「mytext的」 你可以做

var mytextarea = document.getElementById("mytext"); 
var text = mytextarea.value; 
+0

我知道約翰很多。謝謝。我編輯了我的問題。我希望現在更清楚一點。 – 2010-07-08 23:06:17

+0

它對我來說似乎不太清楚。你是否在尋找屬性getter和setter? – Davy8 2010-07-08 23:09:43

+1

就是這樣 – 2010-07-08 23:11:17