我一直在查看GNOME shell javascript界面,并从类的原型中注意到以下片段(感兴趣的人为popupMenu.js
):
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的一个特性?
此外,是否有与此相关的文档?
答案 0 :(得分:1)
在https://developer.mozilla.org/en/JavaScript/Reference/Operators/get
查看http://ejohn.org/blog/javascript-getters-and-setters/和John Resig的帖子有趣的是,您可以像访问任何其他属性一样访问属性,除非它们是动态创建的......例如
foo = {
get blah() {
return "bar";
}
}
foo.blah == "bar"
如果没有原生吸气剂,则必须执行foo.blah()
。坦率地说,我从来没有使用它们只是因为IE8不支持它,而且优势很小。最常见的是,我可以看到它们在我开始使用像foo.blah这样的“愚蠢”属性的情况下很有用,并且在开发周期的后期某个时候意识到我想要foo.blah(),并且必须进行转换在每一点上,虽然使用getter和setter这样的转换是不必要的,因为你只需更改对象定义。