2012-05-01 39 views
0

我一直在關注GNOME shell的JavaScript接口,並從類的原型中注意到以下代碼片段(popupMenu.jsJavascript對象中`get functionname(){...}`的含義

PopupSwitchMenuItem.prototype = { 
    __proto__: PopupBaseMenuItem.prototype, 

    _init: function(text, active, params) { 
     ... (code) 
    }, 

    ... function definitions 

    get state() { 
     return this._switch.state; 
    }, 

    ... more functions 
}; 

任何人都可以向我解釋什麼get state() { ... }的含義?我以爲一切都必須是在一個JavaScript對象內的形式name: value? (如果我做這些對象中的一個,我可以做obj.state,它返回我認爲是this._switch.state)。

它可能有助於指出,GNOME表示他們使用類似於Mozilla的Spidermonkey的JavaScript(gjs)的味道,所以這種行爲是一種非標準的JavaScript行爲和spidermonkey/gjs的功能?

此外,是否有文件與此有關?

+1

這是一個javascript的吸氣劑 – gdoron

回答

1

退房https://developer.mozilla.org/en/JavaScript/Reference/Operators/get和John Resig的帖子在http://ejohn.org/blog/javascript-getters-and-setters/

有趣的事情是,你訪問屬性,就像任何其他財產,除非他們是動態創建的......例如

foo = { 
    get blah() { 
    return "bar"; 
    } 
} 

foo.blah == "bar" 

在無本地getters你必須做foo.blah()。坦率地說,我從來沒有使用過它們,因爲IE8不支持它,而且它的優勢非常小。通常我可以看到它們在我開始使用像foo.blah這樣的「愚蠢」屬性的情況下很有用,並且在開發週期後期的某個時候意識到我想要foo.blah(),並且必須進行轉換在每個點上,雖然對於getter和setter來說,這樣的轉換是不必要的,因爲您只需更改對象定義。

+0

啊,謝謝。我一直在使用谷歌搜索「得到」。 –

相關問題