• Object.defineProperty小解


    最早认识这个函数,源于对vue双向绑定的探索,vue通过这个函数实现属性挟持并结合发布者-订阅者模式实现双向绑定

    先看一个实例:

    var o= {name: 'a'}
    Object.defineProperty(o, 'value', {
    	value: 3,
    	writable: true,
    	enumerable: true,
    	cofigurable: true
    })
    console.log(o.value) //3 

    三个参数,分别是目标对象、属性名称、参数对象

    value:属性值

    writable:属性是否可改写,默认false

    enumerable:是否可在for..in循环中被列举或通过Object.keys列举,默认false

    cofigurable:总开关,设为false后其他属性无效,默认false

    而此函数最主要的用法,在于其可以设置get、set函数对取值、赋值行为进行监控并操作,(可称之为属性挟持,这个属性被此函数强制掌控了!)

    Object.defineProperty(o, 'value1', {
    	get: function(){
                    console.log("我挟持了获取操作")
    		return value1
    	},
    	set: function(newValue){
                    console.log("我挟持了赋值操作")
    		value1= newValue
    	}
    })
    o.value1= '1'  
    console.log(o.value1)
    

     

    1

  • 相关阅读:
    POJ 1873 计算几何
    POJ 1584 计算几何
    POJ 1410 计算几何
    BZOJ 1208 set
    BZOJ 1503 splay
    BZOJ 5277 IQ题orz
    Codeforces Round #549 (Div. 2)A. The Doors
    (原创)同余定理
    April Fools Day Contest 2019 A. Thanos Sort
    PTA数据结构之 List Leaves
  • 原文地址:https://www.cnblogs.com/yanze/p/7420589.html
Copyright © 2020-2023  润新知