Vue 动态数据绑定中心要领

弁言

我之前常常运用 Vue,厥后不满足于仅仅运用它,我想相识其内部完成道理,所以就尝试进修其源码,获益匪浅。所以,假如你跟我一样,愿望应战这高难度的事变,那就开启这一系列吧!

基本上 MVVM 数据双向绑定的框架多数采用了大批的 Object.defineProperty 来完成。

Object.defineProperty 语法

Object.defineProperty(obj, prop, descriptor)

参数:

obj

      须要定义属性的对象。

prop

      需定义或修正的属性的名字。

descriptor

      将被定义或修正的属性的形貌符。

返回值

      返回传入函数的对象,即第一个参数obj。

形貌

该要领许可准确增添或修正对象的属性。平常情况下,我们为对象增添属性是经由过程赋值来建立并显现在属性罗列中(for...inObject.keys 要领), 但这类体式格局增添的属性值可以被转变,也可以被删除。而运用 Object.defineProperty() 则许可转变这些分外细节的默许设置。比方,默许情况下,运用 Object.defineProperty() 增添的属性值是不可转变的。

对象里现在存在的__属性形貌符__有两种重要情势:数据形貌符存取形貌符。数据形貌符是一个具有可写或不可写值的属性。存取形貌符是由一对 getter-setter 函数功能来形貌的属性。形貌符必需是两种情势之一;不能同时是二者。

数据形貌符和存取形貌符均具有以下可选键值:

configurable

      当且仅当该属性的 configurable 为 true 时,该属性形貌符才可以被转变,也可以被删除。默许为 false

enumerable

      当且仅当该属性的 enumerable 为 true 时,该属性才可以出现在对象的罗列属性中。默许为 false

数据形貌符同时具有以下可选键值:

value

      该属性对应的值。可所以任何有用的 JavaScript 值(数值,对象,函数等)。默许为 undefined

writable

      当且仅当该属性的 writable 为 true 时,该属性才被赋值运算符转变。默许为 false

存取形貌符同时具有以下可选键值:

get

      一个给属性供应 getter 的要领,假如没有 getter 则为 undefined。该要领返回值被用作属性值。默许为 undefined

set

      一个给属性供应 setter 的要领,假如没有 setter 则为 undefined。该要领将接收唯一参数,并将该参数的新值分配给该属性。默许为 undefined

    原文作者:DemonGao
    原文地址: https://segmentfault.com/a/1190000008490265
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞