从品牌网站建设到网络营销策划,从策略到执行的一站式服务
一、前言
创新互联公司专业为企业提供忻城网站建设、忻城做网站、忻城网站设计、忻城网站制作等企业网站建设、网页设计与制作、忻城企业网站模板建站服务,10余年忻城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。数据双向绑定作为 Vue 核心功能之一,其实现原理主要分为两部分:
本篇文章主要介绍 Vue 实现数据劫持的思路,下一篇则会介绍发布订阅模式的设计。
二、针对 Object 类型的劫持
对于 Object 类型,主要劫持其属性的读取与设置操作。在 JavaScript 中对象的属性主要由一个字符串类型的“名称”以及一个“属性描述符”组成,属性描述符包括以下选项:
上述 setter 和 getter 方法就是供开发者自定义属性的读取与设置操作,而设置对象属性的描述符则少不了 Object.defineProperty() 方法:
function defineReactive (obj, key) { let val = obj[key] Object.defineProperty(obj, key, { get () { console.log(' === 收集依赖 === ') console.log(' 当前值为:' + val) return val }, set (newValue) { console.log(' === 通知变更 === ') console.log(' 当前值为:' + newValue) val = newValue } }) } const student = { name: 'xiaoming' } defineReactive(student, 'name') // 劫持 name 属性的读取和设置操作
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图