JSのプロパティ入出力時にアクセスメソッドを動かしたい
JavaScriptでいろいろコードを試しています。
ES5で考えています。
プロパティの入出力に対して、
アクセスメソッドを動かすことはできますか?
C#などではプロパティに対して
get/setなどのアクセスメソッドを
記述するのが普通ですが、
JavaScriptでは、プロパティという言葉自体が
公開されたフィールド変数、の意味で使われています。
なので、たとえば下記のように書くのですが
この時に、getRight() とよびださなければいけないのですが
かっこわるいというか
他言語からの移植などの場合にも困るので
アクセスメソッドは公開せずに
right プロパティをよみだしたときに
getRigthが裏で動いている、というようなことが
実現できないのか、と思っています。
ご存じの方おられましたら、教えてください。
よろしくおねがいします。
また、ES5は無理そうだとか、
ES6なら or TypeScriptなら、可能なども
おしえていただければ、助かります。
var common = {};
(function () {
var _ = common;
//Rect(top,left,height,width)
_.Rect = function (top, left, height, width) {
if (!(this instanceof common.Rect)) {
return new common.Rect(top, left, height, width);
}
this.top = top;
this.left = left;
this.height = height;
this.width = width;
};
_.Rect.prototype.getRight = function() {
return this.left + this.width;
};
_.Rect.prototype.getBottom = function() {
return this.top + this.height;
};
}());
var rect1 = common.Rect(1,1,1,1);
というように使う