javascript对象的getter与setter理解与应用

读javascript权威指南有感

在es5中,属性可以由方法替代,就是getter与setter,由他俩定义的属性叫做“取存器属性”。
我们做一个简单的取存器属性:

     var f = {
     
     //声明存取器属性是定义同名的函数 且不用function而使用set与get
        _x:1,
        get x() {
     
          return this._x;
        },
        set x(val) {
     
          this._x=val
        },
      };
      console.log(f.x)//1 成功赋值读取
      f.x=10
      console.log(f.x)//10 成功赋值

注意,如果只声明get那么它是一个只读属性,如果只声明set那么它是一个只写属性,两个共同声明才是读写属性

由于js会把这些函数当做对象的方法使用,所以方法内的this指代的该对象,可以通过this._x来获得属性_x

我们再来看一个使用getter实现的一种更有意义的属性

 var random={
     
      get r100(){
     
        return Math.floor(Math.random()*100)
      },
      get r90(){
     
        return Math.floor((Math.random()*0.9)*100)
      }
    }
    console.log(random.r100)
    console.log(random.r90)

这样可以获得不同范围的随机数

你可能感兴趣的:(web前端,javascript)