2011-02-13 86 views

回答

5

它定义了一个getter

绑定对象属性到一个当属性被查找将要调用的函数。

阅读关于Getters and Setters

当您访问属性时调用此函数:

var sth = obj.currentState 

请注意,这是不一个函数调用(没有()),但一个正常的属性访问。

相应setter应该是这样的:

set currentState(value) { 
    // do something with value 
    // value would be 42 in the next example 
} 

,当你把值分配给属性将被调用,例如

obj.currentState = 42; 

getset关键字对象文字符号内使用特殊的运算符。你也可以使用__defineGetter____defineSetter__

Parser.prototype.__defineGetter__('currentStatus', function() { 
    return this.state[this.state.length - 1]; 
}); 

我不知道在哪个版本的它虽然推出了,它可能不是所有浏览器都支持(尤其是IE))。

+3

它在ECMAScript 5中引入,IE9是第一个带有功能ES5引擎的浏览器。 – user123444555621 2011-02-13 11:34:14