谈谈Object.defineproperty方法

 说起这个方法都知道,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方法)