es6 中 setter/getter 访问器属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 对象中 属性 方法 又是属性又是方法 */
        let obj = {
            _a:1,
            /* get 属性名(){ return } 没有参数 必须使用return返回对应的值*/
            get a(){
                return this._a
            },
            /* set 属性名(参数){} 注意:这个参数有且仅有一个 */
            set a(val){
                this._a += val;
                this.b += val;
                this.d += val;
            },
            b:100,
            d:100,
            c(val){
                this.b+=val;
                this.d+=val;
            }
        }
        /* 
        属性可以设置 也可以获取 就是用来存储的变量 不能执行多条语句
        方法不能存储值 也不能获取值 可以执行后返回值 可以执行多条语句
        希望在设置值时 执行多条语句
        */
        // console.log(obj)
        // obj.c(100)
        // console.log(obj.b,obj.d);

        obj.a = 100;//这样在设置a的值的时候 就会执行set方法并将100作为参数 set a(100) 的方法
        // console.log(obj.b,obj.d);
        // console.log(obj.a)//obj.a没有写赋值  获取a的值 会执行get方法  执行get a(){}

        /* 
        如果一个属性 只有set 无get =》 只能设置不能获取
                    只有get 无set =》 只能获取不能设置 只读
        */
       let obj1 = {
           _a:10,
           get a(){
               return 1000
           }
       }
       obj1.a = 199//无法设置 只读属性
    //    console.log(obj1.a);

    /* ---------------在已有的对象中添加set和get----------------- 
    invoke property getter 
    调用属性getter*/
    Object.defineProperty(obj1,'b',{
        /* 在使用set/get时,不能使用writable,value */
        get(){
            return this._a;
        },
        set(val){
            this._a = val;
        }
    })
    obj1.b = 199;
    console.log(obj1);
    </script>
</body>
</html>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值