当前位置: 首页 > news >正文

深圳企业网站建设公司排名网站开发试题

深圳企业网站建设公司排名,网站开发试题,杭州做网站公司,网站模板找超速云建站vue实例组件初始化过程中#xff0c;在执行initState(vm)方法初始化状态时#xff0c;判断options.computed有值时会进行initComputed$1(vm,options.computed)处理 function initState(vm) {let options vm.$options;// 省略props methods data的处理// 处理计算属性comput…vue实例组件初始化过程中在执行initState(vm)方法初始化状态时判断options.computed有值时会进行initComputed$1(vm,options.computed)处理 function initState(vm) {let options vm.$options;// 省略props methods data的处理// 处理计算属性computedif (options.computed) {initComputed$1(vm, options.computed)} }执行initComputed$1方法每个计算属性都会创建一个watcher观察者实例用来依赖追踪。然后执行defineComputed方法把每个计算属性都直接绑定在vm实例上 function initComputed$1(vm, computed) {let watchers Object.create(null)vm._computedWatchers watchersfor (let key in computed) {let userDef computed[key]let getter typeof userDef function ? userDef : userDef.get// 每个计算属性创建一个watcher观察者实例// lazy:true 默认不执行watchers[key] new Watcher(vm, getter, null, { lazy: true })defineComputed(vm, key, userDef);} }执行defineComputed方法使用Object.defineProperty()进行数据劫持 let sharedPropertyDefinition {enumerable: true,configurable: true,get: function() {},set: function() {} };function defineComputed(target,key,userDef) {if (typeof userDef function) {sharedPropertyDefinition.get createComputedGetter(key)sharedPropertyDefinition.set function() {}} else {sharedPropertyDefinition.get createComputedGetter(key)sharedPropertyDefinition.set userDef.set}Object.defineProperty(target,key,sharedPropertyDefinition) }createComputedGetter方法的返回函数是计算属性的get方法当在模板编译挂载DOM时第一次读取了计算属性就是触发计算属性的get方法。首先是拿到该计算属性的watcher观察者实例执行watcher.evluate()将dirty值置为false触发计算属性对应watcher的getter方法。在此方法中访问响应式数据时会被响应式数据进行依赖收集最后将计算属性计算结果进行缓存与返回。 function createComputedGetter(key) {return function() {let watcher this._computedWatchers this._computedWatchers[key]if (!watcher) returnif (watcher.dirty) {watcher.evaluate();}// 计算属性中的响应式数据依赖收集渲染watcher// 保证响应式数据变化时触发渲染watcher的更新再触发计算属性的读取get方法if (Dep.target) { watcher.depend();}return watcher.value} }// 针对computed的简写 class Watcher {constructor(vm, expOrFn, cb, options) {// ....this.vm vmthis.lazy truethis.dirty this.lazythis.getter expOrFn// 首次不会执行this.value this.lazy ? undefined : this.get();}evaluate() {this.value this.get();this.dirty false;}get() {pushTarget(this); // 赋值Deplet vm this.vm;let value this.getter.call(vm, vm);popTarget();this.cleanupDeps();return value}update() {if (this.lazy) {this.dirty true;}} }当计算属性依赖追踪的响应式数据值有变化时会执行该计算属性对应watcher的update方法在该方法中会将dirty值置为true class Watcher {......update() {if (this.lazy) {this.dirty true;}} }下次再访问计算属性时会判断该计算属性对应的watcher实例中的dirty值。如果值为false表明计算属性依赖追踪的响应式数据未发生变化则无需进行任何处理直接拿上一次处理的缓存结果即可。如果值为true表示追踪的响应式数据有变化需重新执行watcher.evluate()更新缓存结果并将新结果返回。
http://www.pierceye.com/news/732268/

相关文章:

  • 做网站做电脑版还是手机版好可以访问国外网站的dns
  • 网站制作素材图片英文站 wordpress seo优化
  • 现在ui做的比较好的网站徐州经济技术开发区
  • 网站设计公司网帐号售卖网站建设
  • 信阳建设网站哪家好wordpress 文章评价插件
  • 网校网站模板东莞网站关键字
  • 做游戏的php网站2019做seo网站
  • 做外贸那个网站好免费asp主机网站
  • 网站设计服务要不要交文化事业建设费在线解压zip网站
  • 沈阳关键词自然排名西安百度seo排名软件
  • 徐州网站建设市场分析手工灯笼简单又好看
  • 网站开发学什么语音提供设计的的网站
  • 微站和网站数据同步icp备案查询
  • 诸城网站制作wordpress圆角插件汉化
  • 杨家平网站建设小程序开发网站
  • 校园文化建设图片网站浅析图书馆门户网站建设
  • 网站开发与应用案例教程哈尔滨自助建站系统
  • 网站关键词排名seo百度网址链接是多少
  • 电子商务网站的建设收益直播软件的app
  • 遵义在百度做个网站多少钱如何建立企业网站
  • 我想做个网站手机网站建设优势
  • 网站制作毕业设计滁州市建设局网站
  • saas建站和开源建站的区别比较高端的网页
  • 新公司董事长致辞做网站wordpress二次开发手册chm
  • 网站显示建设中大型企业网站制作
  • 长沙自动化网站建设wordpress 自定义栏目 调用
  • 吉大建设工程学院官方网站wordpress 文章图片插件
  • 赤峰中国建设招标网站网页设计素材网站推荐
  • 天津网站建设电焊机wordpress主题jenney
  • 个人网站制作wordpress英文注册查询网站