zoukankan      html  css  js  c++  java
  • 你不知道的JS系列 ( 37 ) - Getter 和 Putter

    对象默认的[[Put]] 和 [[Get]] 操作分别可以控制属性值的设置和获取
    可以使用 getter 和 setter 部分改写默认操作,但是只能应用在单个属性上。当你给一个属性定义 getter、setter 或者两者都有时,这个属性会被定义为 “访问描述符”。对于访问描述符来说,会忽略它们的 value 和 writable 的特性,取而代之的是关心 set 和 get 特性
    var myObject = {
      get a() { // 给 a 定义一个 getter
        return 2;
      }
    }
    
    Object. defineProperty(myObject, 'b', {
      get: function() { // 给 b 设置一个 getter
        return this.a * 2
      },
      enumerable: true // 确保 b 会出现在对象的属性列表中
    })
    myObject.a = 3;
    myObject.a; // 2
    myObject.b; // 4

    这里我们自定义的 getter 只会返回 2,所以 set 操作是没有意义的。为了让属性合理,通常来说 getter 和 setter 是成对出现的,只定义一个通常会产生意料之外的行为

    var myObject = {
      get a() { // 给 a 定义一个 getter
        return this._a_;
      }
      set a(val) {
        this._a_ = val * 2;
      }
    }
    myObject.a = 2;
    myObject.a; // 4

    在本例中,把赋值[[Put]]操作中的值 2 存储到了另一个变量 _a_ 中

  • 相关阅读:
    Java 发送http post 请求
    经纬度计算
    js cookie操作
    wdatepicker默认时间为当前时间
    基于ssm的poi反射bean实例
    jbox小型交互表单(ajax)
    点击图片查看大图(纯js)
    查询物理表字段(mysql)
    离线安装 Cloudera ( CDH 5.x )(转载)
    sed命令详解 (转载)
  • 原文地址:https://www.cnblogs.com/wzndkj/p/12571987.html
Copyright © 2011-2022 走看看