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__などの非標準の getter をサポートしていました。これは、機能を複製するために次のように使用されていました。
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 でまだ非常に有用であることを除いて、今日使用するべきではありません。