Object.defineProperty()的理解

栏目: 编程语言 · 发布时间: 5年前

内容简介:-configurable属性:

1.Object.defineProperty

Object.defineProperty(obj, prop, descriptor)

MDN描述:
obj要在其上定义属性的对象。
prop要定义或修改的属性的名称。
descriptor将被定义或修改的属性描述符。
  • writable属性:

    是否可以被重写: 默认值为true 当属性值为false时,修改无效;

    当writable属性值为false,对prop做出修改是在严格模式下会报错;

    Object.defineProperty()的理解

-configurable属性:

对象的属性是否可以被删除,以及除value和writable特性外的其他特性是否可以被修改;
  • enumberable 是否可以被枚举,for in 或者 Object.keys()
  • set 和 get 属性 默认为undefined
  • 直接声明和用Object.defineProperty()的区别

    let obj = {
       a: 12  // 其他的属性都为true
     }
     Object.defineProperty(obj, 'b', {
       value: 15 //其他的属性都为false
     })
  • 实现简易的双向绑定:

    <body>
     <input type="text" name='' value="" id="ipt">
     您输入的值是<span id='txt'></span>

    </body>

    <script>

    window.onload = () => {
       const obj = {}
       Object.defineProperty(obj, 'text', {
         get() {
           return text
         },
         set(newVal) {
           document.getElementById('ipt').value = newVal
           document.getElementById('txt').innerHTML = newVal
         }
       })
       let input = document.getElementById('ipt')
       input.addEventListener('keyup', (e) => {
         obj.text = e.target.value
       })
     }

2.Vue双向绑定的原理

  • vue数据双向绑定的原理: 数据劫持加发布订阅者的模式,针对对象或者对象属性的一些变化,通知订阅者,通过Compile来解析编译模板指令,再通过watcher进行数据的更新渲染。
  • Vue中Object.defineProperty()的缺点:

    不能监听数组的变化:当你利用索引设置一个元素,或者修改数组长度这些操作并不是响应式的;

  • 展望ES6的新特性Proxy

    let p = new Proxy(target, handler)

    通俗的理解,在对象之前设一层拦截,要对目标对象做的相应的处理,必须通过这层拦截,他可以对外部的处理做一些过滤和操作;

    proxy的优点有多达13种数据劫持的方法,缺点就是兼容性问题。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

可计算性和计算复杂性

可计算性和计算复杂性

朱一清 / 国防工业出版社 / 2006-4 / 18.0

本书深入浅出地介绍了研究可计算性的四个主要模型以及四个模型彼此之间的关系:介绍了计算复杂性的基本概念和重要的研究方法与一些研究成果。内容涉及递归函数、图灵机、λ演算、马尔可夫算法、计算复杂度的分类、NP完全理论、非一致复杂性等。分述于十章,书中附有习题。 本书可作为广大有志于突破计算复杂性研究僵局——“P=NP?”的科技工作者,计算机科学和元计算机科学工作者,数学和元数学工作者以及大......一起来看看 《可计算性和计算复杂性》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具