JavaScriptのセッターとゲッターの詳しい説明

小云云
リリース: 2018-01-05 13:28:01
オリジナル
3006 人が閲覧しました

この記事は主に JavaScript の setter メソッドと getter メソッドを詳しく紹介していますので、興味のある方はぜひ参考にしてください。

私はこれまでプロジェクトを書くときに Javascript の setter メソッドと getter メソッドを使用したことがなかったので、理解する必要がある概念です。今日、この知識点を本で見ましたが、まだ漠然としていたので、勉強することにしました。研究;

JavaScript オブジェクトのプロパティは、名前、値、および一連のプロパティで構成されます。まず、オブジェクトの 2 つのプロパティを見てみましょう:

データ プロパティ。よく使用するのでよく知っておく必要があります。
アクセサー プロパティ。アクセサー プロパティとも呼ばれます。

アクセサー プロパティとは何ですか?値を取得および設定する関数のセットです。 ECMAScript5 では、1 つまたは 2 つのメソッドを使用してプロパティ値を設定できます。2 つのメソッドはゲッターとセッターであり、そのため、ゲッターとセッターによって定義されたプロパティはアクセサー プロパティと呼ばれます。


var o = {
  get val(){
    /*函数体*/
    return ;
  },
  set val(n){
    /*函数体*/
  }
}
ログイン後にコピー

上記は、アクセサー属性を定義する最も簡単な方法です。getter メソッドと setter メソッドが実際には関数を置き換える関数であることがわかります。


var o = {
  a:3,
  get val(){
    return Math.pow(this.a,2);
  }
}

console.log(o.val);//9
o.val = 100;
console.log(o.val);//9
ログイン後にコピー

ゲッター メソッドにはパラメーターがなく、戻り値があります。ゲッター メソッドが個別に設定されている場合、属性値を取得することのみが可能で、定義された属性値を変更することはできないため、データのセキュリティが確保されます。

var o = {
  a:3,
  set val(n){
    this.a = n;
  }
}

console.log(o.val);//undefined
ログイン後にコピー

setter メソッドにはパラメータがあり、戻り値はありません。setter メソッドが単独で設定されている場合、属性値を読み取ることはできません

var o ={
  a:3,
  get val(){
    return Math.pow(this.a,n);
  },
  set val(n){
    this.a = Math.max(this.a,n);
  }
}

console.log(o.a);//3
console.log(o.val);//9
o.val = 10;
console.log(o.a);//10
console.log(o.val);//100
ログイン後にコピー

上記のコードからわかるように、これはそのオブジェクトを参照します。これは、コード内の "o" です);

var o ={
   a:3,
  get val(){
    return Math.pow(this.a,n);
  },
  set val(n){
    this.a = Math.max(this.a,n);
  }
}

o.val = 10;
var foo = Object.create(o);
console.log(foo.val);//10
foo.val = 9;
console.log(foo.val);//10
ログイン後にコピー

さらに、アクセサー プロパティも継承できます

関連する推奨事項:

JavaScript のゲッターとセッターの使い方

JavaScript なぜ setter を使用するのは良くないのでしょうか?

JavaScript での getter/setter 実装のサンプルコードの共有

以上がJavaScriptのセッターとゲッターの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!