美文网首页Web前端之路程序员
JavaScript 改变对象属性赋值与取值操作的两种姿势

JavaScript 改变对象属性赋值与取值操作的两种姿势

作者: 老邵 | 来源:发表于2018-04-09 18:17 被阅读23次

    从 ES5 开始,JavaScript 中每个属性都有相应的属性描述符。属性描述符有多个,可以分为数据描述符与访问描述符两类。数据描述符指的控制属性可访问性等特性,访问描述符可以覆盖属性默认的赋值与取值操作。有两种方法可以声明访问描述符:

    1. 直接在对象中改变

      let obj = {
         set a(value) {
            this._a = value + 1;
                },//更改赋值操作
         get a() {
            return this._a;
                } //更改取值操作
      }
     obj.a = 3;
    console.log(obj.a);//9
    

    当对 a 属性赋值时会执行 set 函数,在函数内为对象添加一个 _a 属性并赋值。
    当对 a 属性取值是会执行 get 函数,取得的值与 this._a 相同。

    2.使用 defineProperty

    let obj = {}
    
    Object.defineProperty(
              obj,
              "a",
             {
              get:function() {
                        return 2;
                    }
              }
    )
    console.log(obj.a);//2
    

    当对 a 进行取值操作时,返回 2。

    相关文章

      网友评论

        本文标题:JavaScript 改变对象属性赋值与取值操作的两种姿势

        本文链接:https://www.haomeiwen.com/subject/mggihftx.html