ホームページ  >  記事  >  ウェブフロントエンド  >  javascript_javascript スキルの __defineGetter__ と __defineSetter__ の概要

javascript_javascript スキルの __defineGetter__ と __defineSetter__ の概要

WBOY
WBOYオリジナル
2016-05-16 16:39:421599ブラウズ

Getter は属性の値を取得するメソッドであり、Setter は属性の値を設定するメソッドです。事前定義されたコア オブジェクトまたはユーザー定義オブジェクトに対してゲッター メソッドとセッター メソッドを定義できるため、既存のオブジェクトに新しいプロパティを追加できます。

Getter メソッドまたは Setter メソッドを定義するには 2 つの方法があります:

1. オブジェクトの初期化中に
を定義します。 2. オブジェクトが定義されたら、オブジェクトの __defineGetter__ メソッドと __defineSetter__ メソッドを使用して定義を追加します

オブジェクト初期化プロセスを使用して Getter メソッドと Setter メソッドを定義するときに行う必要がある唯一のことは、getter メソッドの前に「get」を追加し、setter メソッドの前に「set」を追加することです。

もう 1 つ注意すべき点は、ゲッター メソッドにはパラメーターがなく、セッター メソッドには、設定される属性の新しい値であるパラメーターが 1 つ必要であるということです。

例:

コードをコピー コードは次のとおりです:

o = {
値:9、
get b() {return this.value;},
set setter(x) {this.value = x;}
}

オブジェクトを定義した後、ゲッター メソッドまたはセッター メソッドをオブジェクトに追加するには、2 つの特別なメソッド __defineGetter__ と __defineSetter__ が必要です。これら 2 つの関数では、最初のパラメーターが文字列として指定されたゲッターまたはセッターの名前であること、および 2 番目のパラメーターがゲッターまたはセッターである関数であることが必要です。

たとえば、Date オブジェクトに year 属性を追加します。

コードをコピー コードは次のとおりです:

Date.prototype.__defineGetter__('year', function() {return this.getFull Year();});
Date.prototype.__defineSetter__('年', function(y) {this.setFullyear(y)});
var now = 新しい日付
アラート(現在.年)
現在.年 = 2006; アラート(現在);


どのフォームを使用するかは主に個人のプログラミング スタイルによって決まります。最初のフォームはコンパクトで理解しやすいです。ただし、オブジェクトの定義後に Getter または Setter を追加する場合、またはこのオブジェクトのプロトタイプが自分で作成したものではない場合、または組み込みオブジェクトである場合は、2 番目の方法を使用する必要があります。

以下は、Mozilla ブラウザに innerText 属性を追加する実装です:


HTMLElement.prototype.__defineGetter__
(
"innerText",function()
// innerText の値を取得するゲッター メソッドを定義します
//だから今すぐ読めるよ
                                                                                      var textRange = this.ownerDocument.createRange();
//範囲を使用してオブジェクトの内容を取得します
textRange.selectNodeContents(this); //オブジェクトノードのコンテンツのみを取得します
return textRange.toString(); // innerText にノードのコンテンツの値を与えます
}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。