• JS中的getter和setter


    对象有两种属性:(1)数据属性,就是我们经常使用的属性(2)访问器属性,也称存取器属性

    存取器属性就是一组获取和设置值的函数。getter负责获取值,它不带任何参数。setter负责设置值,在它的函数体中,一切的return都是无效的。

    var o = {
      get val(){
        /*函数体*/
        return ;
      },
      set val(n){
        /*函数体*/
      }
    }

    在对象内如果设置了存取器属性,如果某一变量只声明了getter方法,那么它仅仅只可读而不可写。如果只声明了setter方法,那么读到的该变量值永远都是undefined。

    //只声明getter方法时不能通过getter方法来改变变量值
    var obj = {
      a: 3,
      b: 8,
      get val() {
        return this.a;
      }
    }
    
    console.log(obj.val);     //3
    obj.val= 100;
    console.log(obj.val); //3
    
    //只声明setter方法时不能获取变量的值
    var obj = {
      a: 3,
      b: 8,
      set val(n) {
        this.a = n;
      }
    }
    console.log(obj.val);     //undefined
    obj.val= 100;
    console.log(obj.val); //undefined
    console.log(obj.b);  //8   其他变量不受影响
    
    //同时声明两种方法
    var obj = {
      a: 3,
      b: 8,
      get val(){
        return this.a;
      },
      set val(n) {
        this.a = n;
      }
    }
    console.log(obj.val);     //3
    obj.val= 100;
    console.log(obj.val); //100

    setter和getter方法在定义时并未用function关键字

    详细可以参考:https://www.cnblogs.com/zhuzhenwei918/p/6025077.html

  • 相关阅读:
    Power of Cryptography
    Radar Installation
    Emag eht htiw Em Pleh
    Help Me with the Game
    89. Gray Code
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    82. Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/wenxuehai/p/10333987.html
Copyright © 2020-2023  润新知