美文网首页
defineProperty

defineProperty

作者: adtk | 来源:发表于2017-03-09 17:19 被阅读0次

    兼容性:ie9以上,ie8实现不彻底

    数据属性
    Object.defineProperty(对象,'属性',描述符对象)
    
    var o={};
        Object.defineProperty(o,"name",{
            writable:false,    //为false时不能更改,默认false
            configurable:false,//为false时不能delete,默认false
            enumerable:false,  //为false时不能被遍历,默认false
            value:"h"
        })
        for(var i in o){
            console.log(i);//没有执行
        }
        o.name="x";
        console.log(o.name);//h
    
        delete o.name;
        console.log(o.name);//h
    
    访问器属性:
    Object.defineProperty(对象,'属性',描述符对象)
    
    var o={a:1};
        Object.defineProperty(o,"name",{
            configurable:false,//为false时不能delete,默认true
            enumerable:false,//为false时不能被遍历,默认true
            get:function(){  //没有此方法表示不能读
    
                return this.a;  //执行2(获取值)
            },
            set:function(newValue){ //没有此方法表示不能写
    
                this.a=12;  //执行1(设置值)
            }
        })
    
        o.name=2;//执行1
        console.log(o.name);//12,//执行2
    
    定义多个属性
    Object.defineProperties(  object,{"属性":{}  }  );
    

    接收两个对象参数,第一个是要添加和修改属性的对象,第二个对象的属性以第一个对象中属性一一对应

    var o={};
        Object.defineProperties(o,{
            a:{
                value:1
            },
            b:{
                value:2
            },
            c:{
                get:function(){},
                set:function(bewValue){}
            }
        })
    
        o.b=2;
        console.log(o.a);
    

    注:vue基于此属性实现数据绑定

    相关文章

      网友评论

          本文标题:defineProperty

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