あなたが話しているのはゲッターです:それはプロパティとして機能する関数です。javascript 1.8.5以降の標準です。つまり、古いブラウザでは処理できません。
構文は次のとおりです。例を使用します。
obj = {
get func() { return "hello" ; }
};
// use like this :
console.log(obj.func);
ほとんどの場合、セッターも定義する必要があります。これも、プロパティのように動作する関数です。構文は次のようになります:
obj = {
get func() { return this._innerText ; },
set func(txt) { this._innerText = txt ; },
_innerText : "hello"
};
console.log(obj.func) ; // output is hello
obj.func = "godd bye" ;
console.log(obj.func) ; // output is good bye
明らかに、簡単な例でよくあることですが、これはあまり役に立ちません。
ゲッター/セッターを使用して度からラジアンへのコンバーターを見てみましょう:
var Angle = {
get degree () { return this._degree ; },
set degree (dg) { this._degree = dg ; },
get radian () { return 2*Math.PI*this.degree/360 ; },
set radian (rd) { this._degree = rd * 360 / (2*Math.PI) ; },
_degree : 0
} ;
// you can use :
Angle.radian = Math.PI / 2;
console.log ( Angle.degree ); // -->> output is 90
Angle.degree=45 ;
console.log(Angle.radian) ; // --> output is 0.7853... which is PI/4
また、標準プロパティとゲッター/セッターの両方を定義できるObject.definePropertyを確認することもできますが、より多くのオプション、特にプロパティを「非表示」にして列挙できないようにするオプションがあります。
詳細については、https:
//developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/set
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty