理解对象及对象的属性

一:理解对象的属性

属性类型:数据属性和访问器属性

1数据属性:数据属性有四个描述其行为的特性

  1.1 Configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否将属性修改为访问器属性

  1.2 Enumerable:表示能否通过for-in循环返回属性,

  1.3 Writable:能够修改属性的值

  1.4 Value:包含这个属性的值,读取属性的值的时候在这里读取,写入属性的值,将新值保存在这个地方

要修改属性默认的特性:Object.defineProperty(),该方法接收三个参数,属性所在的对象,属性的名字和属性的特性(描述符对象)

注意1:一旦将属性的特性Configurable定义为false不可配置,就不能再将他变回可配置

2访问器属性:访问器属性不包含数据值,它们包含一对getter和setter函数,访问器有四个特性

  2.1 Configurable

  2.2 Enumerable

  2.3 Get 在读取属性时调用的函数

  2.4 Set 在写入属性时调用的函数

访问器属性不能直接定义,必须使用Object.defineProperty()来定义

3读取属性的特性Object.getOwnPropertyDescriptor(),该方法接收两个参数,属性所在的对象,属性的名称,返回值是一个对象

二:理解双向绑定

双向数据绑定:将对象属性的变化绑定到UI,不管是对象属性的变化还是UI的改变,都会改变另外一方。

双向绑定的底层思想:1我们需要一个方法来知道那个UI元素绑定了那个相对应的属性,2我们需要监视UI元素和属性的变化,3我们需要将变化传播到绑定的对象和UI上面

发布-订阅模式:监听一个事件(订阅),触发事件(发布),移除事件

脏值检查模式:在特定的事件下,去检测数据有没有改动

数据劫持:通过Object.defineProperty()来劫持各个属性的getter与setter,来知道数据是否已经发生改变。

vue.js的双向数据绑定就是发布-订阅与数据劫持的组合,通过Object.defineProperty()来劫持各个属性的getter与setter,然后在数据变动时发布给订阅者,触发相应的回调。

三:理解对象

四:对象的拷贝

不忘初心,不负梦想
原文地址:https://www.cnblogs.com/panrui1994/p/9002931.html