ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript のセッター メソッドとゲッター メソッドの概要

JavaScript のセッター メソッドとゲッター メソッドの概要

高洛峰
リリース: 2017-01-03 17:09:03
オリジナル
1748 人が閲覧しました

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 サイトに注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート