说起这个方法都知道,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 及 数据属性,那在往下问你为什么的时候,你也能回答一二。
还有那句话:如有不对之处及不周之处请大佬们指出,也希望对一些人有所帮助,咱们下次再会!
网友评论