zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    我的DBDA类文件
    登录时的验证码怎么写?
    phpcms 制作简单企业站的常用标签
    HTML 基础知识
    目标
    split函数的实现
    myString操作符重载
    cout中的执行顺序_a++和++a
    二叉树的层次遍历法
    树的前中序遍历_求后续遍历
  • 原文地址:https://www.cnblogs.com/yanze/p/7420589.html
Copyright © 2011-2022 走看看