chi*_*lla 18 javascript xulrunner getter-setter
我正在使用XULRunner并在代码示例中遇到以下模式:
var StrangeSample = {
backingStore : "",
get foo() { return this.backingStore + " "; },
set foo(val) { this.backingStore = val; },
func: function(someParam) { return this.foo + someParam; }
};
StrangeSample.foo = "rabbit";
alert(StrangeSample.func("bear"));
Run Code Online (Sandbox Code Playgroud)
这导致"兔子熊"被警告.
我以前从未见过这种在Javascript中使用过的get/set模式.它有效,但我找不到任何文档/参考.这是XUL特有的东西,最近的一种语言特征,还是我错过的东西?我很困惑,因为几个月前我特意找了这样的东西,找不到任何东西.
作为参考,删除"get"或"set"会导致语法错误.将它们重命名为其他任何内容都是语法错误.它们确实似乎是关键字.
任何人都可以为我阐明这一点,或指出我参考?
chi*_*lla 14
正如Martinho所建议的,这里有一些链接解释JS 1.5中的getter/setter:
http://ejohn.org/blog/javascript-getters-and-setters/
http://ajaxian.com/archives/getters-and-setters-in-javascript
但请注意,它们似乎在IE中似乎不受支持,并且一些开发人员对于具有副作用的变量赋值的想法存在(合法的)担忧.
Daniel指出,get/set不是保留关键字.创建名为"get"和"set"的顶级函数并使用上面发布的代码示例时,我没有任何问题.所以我假设解析器足够聪明,允许这样做.事实上,即使以下似乎是合法的(如果令人困惑):
var Sample = {
bs : "",
get get() { return this.bs; },
set get(val) { this.bs = val; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |