美文网首页
谈谈Object.defineproperty方法

谈谈Object.defineproperty方法

作者: 树下老大爷的小老弟 | 来源:发表于2020-04-18 15:34 被阅读0次

     说起这个方法都知道,vue2.0响应式数据嘛,那今天咱们就聊聊不准确的 defineproperty,哎?这怎么是不准确呢? 您别着急。客官往里走,里面都有:

    咱们先从基本开始,让不知道这个方法的 认识一下。

    一、作用

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

    二、语法

    Object.defineproperty( object,‘ propName ’ ,descriptor);

    三、参数详解

            object :要定义属性的对象,返回的也是

            propName :要定义或修改的属性的名称。

            descriptor:要定义或修改的属性描述符,属性描述符详情之==>   这里

    Vue是如何实现双向数据绑定的?

        可能朋友们会说是数据劫持,没错,是数据劫持,但是如果细说的话是对象属性 访问器属性中的 getter 函数和 setter 函数实现的数据劫持比较准确,了解过数据属性的话就会知道 这两个函数是什么特性。

        也许有人又会说,是Object.defineproperty()配合 set 和 get 实现的数据双向绑定,也不准确,因为 Object.defineproperty()方法只是做到了对数据的检测,但是对UI重新渲染它可没有做啊,这里就涉及到了发布-订阅模式,和 watcher 的相关知识,有兴趣可以自己看看。

    就拿最典型的例子来说(个人理解,大佬纠正):

    数据劫持

            以上就是个人对 defineproperty 的相关介绍及理解,有时候面试问 vue 响应式原理,你说到 defineproperty 的时候也就差不多了,如果你真正了解过 defineproperty 及 数据属性,那在往下问你为什么的时候,你也能回答一二。

            还有那句话:如有不对之处及不周之处请大佬们指出,也希望对一些人有所帮助,咱们下次再会!

    相关文章

      网友评论

          本文标题:谈谈Object.defineproperty方法

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