Object.defineProperty与Object.difinePropertyies

关于Object.difineProperty的用法很简单,就是传三个参数(对象,属性,一些可配置的属性)

Object.difineProperty(obj,prop,descriptor)
 function defineproperty(){
        var _obj={}
        Object.defineProperty(_obj,'a',{
            value:40,
            // writable:false, //是否可编辑
            // enumerable:true //是否可枚举
        })
        return _obj
  }


  var Obj=defineproperty();
  console.log(Obj.a) //访问a的值

    // Obj.a='fsdfsd';
    // console.log(Obj) //writable默认为false,,表示不可修改,当设置为true之后Obj里面的a值就可以修改 打印出 {a: "fsdfsd"},否则不可修改


 for(key in Obj){ 
//enumerable默认为false,表示不可枚举,设置为true之后才能打印出Obj里面的属性
        console.log('ff'+key)
    }

重点是Object.difinePropertyies,最常用,很多响应式都是使用它实现的,它里面有getter,setter方法来监听对数据的操作(数据劫持)

 function Defineproperties(){
        var _obj={}
       let obj=Object.defineProperties(_obj,{
            a:{
                get(){
                    
                },
                set(newval){
                    console.log('设置了'+newval)
                }
            },
            b:{
                get(){
                   
                    return '获取的时候b改为:哈哈'
                },
                set(newval){
                    console.log('设置了b'+newval)
                }
            }
        })
        return obj;
    }


    var difineObj=Defineproperties();


    console.log(difineObj.b) // 获取的时候b改为:哈哈

 

posted @ 2020-09-05 14:53  菜鸟程序员的总结  阅读(300)  评论(0编辑  收藏  举报