自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:你删除了太多的空格;) –