Getterは属性の値を取得する方法であり、Setterは属性の値を設定する方法です。 GetterおよびSetterメソッドは、事前定義されたコアオブジェクトまたはユーザー定義のオブジェクトに対して定義でき、既存のオブジェクトに新しいプロパティを追加できます。
ゲッターまたはセッターメソッドを定義する方法は2つあります。
1。オブジェクトの初期化の場合を定義します
2。オブジェクトが定義された後、定義はオブジェクトの__definegetter__および__definesetter__メソッドを介して追加されます。
オブジェクトの初期化プロセスを使用してゲッターメソッドとセッターメソッドを定義するときに行う唯一のことは、ゲッターメソッドで「取得」し、セッターメソッドで「設定」することです。
もう1つ注意すべきことは、ゲッターメソッドにはパラメーターがなく、セッターメソッドにはパラメーター、つまり設定する属性の新しい値が必要であることです。
例えば:
コードコピーは次のとおりです。
o = {
値:9、
get b(){return this.value;}、
set setter(x){this.value = x;}
}
オブジェクトが定義されたら、ゲッターまたはセッターメソッドをオブジェクトに追加します。2つの特別な方法__definegetter__と__defineetter__を使用します。これらの2つの関数は、最初の関数が弦で与えられたゲッターまたはセッターの名前である必要があり、2番目のパラメーターはゲッターまたはセッターとしての関数です。
たとえば、日付オブジェクトに1年属性を追加します。
コードコピーは次のとおりです。
date.prototype .__ DefineGetter __( 'year'、function(){return this.getTullear();});
date.prototype .__ Definesetter __( 'year'、function(y){this.settlear(y)});
var now = new Date;
アラート(now.year);
now.year = 2006;
アラート(今);
採用するフォームが主に個人のプログラミングスタイルに依存する場合、最初のフォームはコンパクトで理解しやすいです。ただし、オブジェクトが定義された後にゲッターまたはセッターを追加する場合、またはこのオブジェクトのプロトタイプがあなたによって書かれていないか、組み込まれていない場合は、2番目の方法を使用する必要があります。
MozillaブラウザにInnerText属性を追加する実装は次のとおりです。
コードコピーは次のとおりです。
htmlelement.prototype .__定義
(
「Innertext」、function()
// Innertextの値を取得するためのゲッターメソッドを定義します。
//今すぐ読むことができます!
{
var textrange = this.OwnerDocument.createrange();
//範囲を使用してオブジェクトのコンテンツを取得します
textrange.selectnodecontents(this);
//オブジェクトノードのコンテンツのみを取得します
return textrange.toString();
// InnerTextにノードコンテンツの値を指定します
}