/* @flow */import { hasSymbol } from 'core/util/env'
import { warn } from '../util/index'
import { defineReactive } from '../observer/index'export function initProvide (vm: Component) {const provide = vm.$options.provideif (provide) {  // 计算proved结果vm._provided = typeof provide === 'function'? provide.call(vm): provide}
}export function initInjections (vm: Component) {const inject: any = vm.$options.injectif (inject) {// inject is :any because flow is not smart enough to figure out cached// isArray here  // 注入 可以任何类型 是因为fow不过智能, 计算出被缓存的数组const isArray = Array.isArray(inject)  //如果是对象, 取出属性值const keys = isArray? inject: hasSymbol? Reflect.ownKeys(inject): Object.keys(inject)for (let i = 0; i < keys.length; i++) {const key = keys[i]const provideKey = isArray ? key : inject[key]let source = vmwhile (source) {if (source._provided && provideKey in source._provided) {/* istanbul ignore else */if (process.env.NODE_ENV !== 'production') {       //添加这个vm的inject属性监控defineReactive(vm, key, source._provided[provideKey], () => {     //避免直接监控一个属性, 因为当重新渲染的时候, 这个监控会被改变        warn(`Avoid mutating an injected value directly since the changes will be ` +`overwritten whenever the provided component re-renders. ` +`injection being mutated: "${key}"`,vm)})} else {defineReactive(vm, key, source._provided[provideKey])}break}source = source.$parent}}}
}

这个方法应该是给vm的inject属性添加监控.

转载于:https://www.cnblogs.com/dhsz/p/7116409.html

vue.js 源代码学习笔记 ----- instance inject相关推荐

  1. vue.js 源代码学习笔记 ----- 工具方法 lang

    /* @flow */ // Object.freeze 使得这个对象不能增加属性, 修改属性, 这样就保证了这个对象在任何时候都是空的 export const emptyObject = Obje ...

  2. vue.js 源代码学习笔记 ----- decoder

    /* @flow */let decoderexport function decode (html: string): string {decoder = decoder || document.c ...

  3. Vue.js教程学习笔记

    官方视频简易教程:https://learning.dcloud.io/ 1. 安装与部署 第一阶段(初学)可以通过在html文件中引入脚本来完成安装 <script src="vue ...

  4. 唐金州的Vue开发实战学习笔记(基础篇)

    Vue开发实战学习笔记 简易的Vue程序 组件 事件 插槽 单文件组件 双向绑定 虚拟DOM与key属性 组件更新 状态data与属性props vue的响应式更新 计算属性和侦听器 计算属性 com ...

  5. 唐金州的Vue开发实战学习笔记(生态篇)

    Vue开发实战学习笔记 Vuex Why Vuex How Vuex Vuex的核心概念和底层原理 Vuex的最佳实践 Vue Router Why Vue Router 路由类型及底层原理 Nuxt ...

  6. JS逆向学习笔记 - 持续更新中

    JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...

  7. Vue.js 框架基础笔记

    Vue.js 框架基础笔记 1. Vue.js 基本概念 1.1 遇见 Vue.js 1.1.1 为什么要学习 Vue.js 1.1.2 前端开发的复杂化 1.1.3 Vue.js 特点 1.1.4 ...

  8. Vue数据代理+事件处理+事件修饰符的作用+计算属性的使用,尚硅谷Vue系列教程学习笔记(2)

    尚硅谷Vue系列教程学习笔记(2) 参考课程:<尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通> 参考链接:https://www.bilibili.com/video/ ...

  9. js/jquery学习笔记

    javascript简介 JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言. 不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说Ja ...

  10. eos 源代码学习笔记一

    文章目录 eos 源代码学习笔记 1.eos 中的常见合约类型 2.语言环境局部( locale )变量的使用简介(目的是通过 gettext 软件包 来实现软件的全球化) 3.eos 源代码的一些优 ...

最新文章

  1. CSS中关于清除浮动的问题
  2. 这个“大脑”收获一份大奖!
  3. [UOJ386]鸽子固定器
  4. 数字信号处理(第四版)pdf
  5. php换行替换,php怎么替换回车换行
  6. Mob研究院 · BAT数据洞察报告
  7. PCIE数据采集软件使用
  8. 语音邮件 voice mail 概述
  9. 【科普小知识】KMS 是什么?
  10. 「数据结构」普林斯顿算法课第二周作业
  11. 十只老鼠和一千瓶毒药的故事
  12. c语言 自锁按键,具有自锁功能的按键结构的制作方法
  13. 2018沈阳网络赛J
  14. 对学生创业的重新认识
  15. 2016-12-26 菜鸟上路(4)——VS中关于MFC界面设计
  16. 求刷Kindle Fire HD的方法
  17. geetest极验验证码使用
  18. 如何解决全局工业相机飞拍拖影问题
  19. 分享Spark MLlib训练的广告点击率预测模型
  20. jquery php 抽奖,jquery-rotate.js制作红包大放送抽奖效果

热门文章

  1. POJ 1026 Cipher
  2. 【转】Java 中正确使用 hashCode 和 equals 方法
  3. 忙了好一阵子了 才记起来我的博客园
  4. python源码中的学习笔记_第1章_print 函数与数据类型
  5. 数据分类是否一定要求样本均衡
  6. 生成式预训练之MASS
  7. 7万硕士、21万本科生在送外卖,是自愿还是工作难找无奈之举?
  8. 【公开课】斯坦福2019秋季课程:图机器学习资料全公开
  9. 论文赏析[EMNLP18]用控制任务来设计并解释探测任务
  10. 李宏毅机器学习——结构化学习(二)