自ES5以來,您可以使用Object.defineProperty定義獲取者和設置者。你ES6代碼基本上以下ES5代碼語法糖:
function Job () {
this.start = new Date;
}
Object.defineProperty(Job.prototype, 'age', {
get: function () { return new Date - this.start; }
});
在此之前,一些發動機已經爲干將非標準的支持,如Object.prototype.__defineGetter__,它會一直這樣使用,以複製功能:
Job.prototype.__defineGetter__('age', function () {
return new Date - this.start;
});
SpiderMonkey的也有一些其他的方法來做到這一點甚至更早:
Job.prototype.age getter = function() {
return new Date - this.start;
};
// or, this one, which declares age as a variable in the local scope that acts like a getter
getter function age() { ... };
的那些方式都不應該在今天,使用除Object.defineProperty
這在ES6中仍然非常有用。
不是一種方法,而不是*稱爲ATTRIBUTE *,而是「稱爲屬性」。 – 2016-08-15 18:44:07
@torazaburo:你刪除了太多的空格;) –