zoukankan      html  css  js  c++  java
  • 理解对象及对象的属性

    一:理解对象的属性

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

    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,然后在数据变动时发布给订阅者,触发相应的回调。

    三:理解对象

    四:对象的拷贝

    不忘初心,不负梦想
  • 相关阅读:
    运算符
    初始编码
    python文件操作
    波士顿房价预测
    机器学习基础-数理统计
    linux基础命令--userdel 删除用户帐户和相关文件
    linux基础命令--rmdir 删除空目录
    linux基础命令--groupdel 删除群组
    linux基础命令--groupadd 创建新的群组
    linux基础命令--groupmod 修改组定义
  • 原文地址:https://www.cnblogs.com/panrui1994/p/9002931.html
Copyright © 2011-2022 走看看