JavaScript のセッターとゲッターは、日常生活ではほとんど使用されないメソッドであり、それ自体は標準メソッドではなく、IE 以外のブラウザーでのみサポートされています (つまり、カーネルにはそれを実行する他のメソッドがある可能性があります。その解決策はわかりません)。
1. データへのアクセス制限:
a.value は、ゲッターで例外がスローされた場合の value 変数のゲッター メソッド呼び出しです。
2. dom 変数の監視:
window.name はドメイン間で非常に便利な dom 属性です (有名な、詳細については Baidu を参照してください)。 .name を使用すると、ページ間メモリの非同期通信を実現できます
3. 想像力を働かせて、できることはたくさんあります
以下を再現します:
まず、Getter と Setter とは何か、そしてその理由を簡単に理解しましょう。それらは役に立ちます。次に、現在どのプラットフォームが Gettets と Setter をサポートしているかを見てみましょう。
ゲッターとセッター
ゲッターとセッターを使用すると、オブジェクトのデータをすばやく取得または設定できます。一般に、オブジェクトには次のような特定の値を取得および設定するために使用される 2 つのメソッドがあります:
{ getValue: function(){ return this._value; }, setValue: function(val){ this._value = val; } }
この方法で JavaScript を記述することの明白な利点は、それを使用して、必要のないものを非表示にできることです。外の世界からプロパティに直接アクセスします。最終的なコードは次のようになります (新しく作成された Filed オブジェクトの値を保存するためにクロージャーを使用します):
function Field(val){ var value = val; this.getValue = function(){ return value; }; this.setValue = function(val){ value = val; }; }
したがって、次のように使用できます:
var field = new Field("test"); field.value // => undefined field.setValue("test2") field.getValue() // => "test2"
上の例の「隠し値属性」をシミュレートしてみましょう。コードは次のようになります:
function Field(val){ var value = val; this.__defineGetter__("value", function(){ return value; }); this.__defineSetter__("value", function(val){ value = val; }); }
しかし、このように書くのが好きではなく、オブジェクトのプロトタイプでゲッターとセッターを定義したい場合は (プライベート変数がどこに書かれているかは関係ありません)、別の構文を使用することもできます。
function Field(val){ this.value = val; } Field.prototype = { get value(){ return this._value; }, set value(val){ this._value = val; } };
この構文は奇妙に見えるかもしれませんが、しばらく使用すると簡単に受け入れられるようになります。
以下は別の例です。これにより、外部の世界はユーザー名の配列を取得できますが、元の非表示のユーザー オブジェクトを取得することはできません。
function Site(users){ this.__defineGetter__("users", function(){ // JS 1.6 Array map() return users.map(function(user){ return user.name; }); }; }
次の点に注意してください:
オブジェクトでは、各変数はゲッターまたはセッターを 1 つだけ持つことができます。 (つまり、value には getter と setter を含めることができますが、value に 2 つの getter を含めることはできません)
getter または setter を削除する唯一の方法は、delete object[name] です。 delete では、一部の共通プロパティ、ゲッターおよびセッターを削除できます。
__defineGetter__ または __defineSetter__ を使用すると、以前に定義された同じ名前のゲッターまたはセッター (プロパティも) がオーバーライドされます。
プラットフォーム
サポートされているブラウザは次のとおりです:
Firefox
Safari 3+
Opera 9.5
上記は、エディターによって導入された JavaScript の setter メソッドと getter メソッドの完全な説明です。さらに詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。
JavaScript でのセッター メソッドとゲッター メソッドの導入に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。