1. /**
  2. * Check if value is primitive//检查该值是否是个原始值
  3. */
  4. function isPrimitive (value) {
  5. return typeof value === 'string' || typeof value === 'number'
  6. }
  7.  
  8. /**
  9. * Create a cached version of a pure function.//创建一个纯粹的函数的缓存版本
  10. */
  11. function cached (fn) {
  12. var cache = Object.create(null);//创建一个缓存对象
  13. return (function cachedFn (str) {//返回一个函数
  14. var hit = cache[str];//以函数的参数为键
  15. return hit || (cache[str] = fn(str))//如果缓存对象中存在这个键,那么就从缓存中返回这个函数,如果没有就把这个函数赋值到缓存对象中并且返回
  16. })
  17. }
  18.  
  19. /**
  20. * Camelize a hyphen-delimited string.//驼峰化一个连字符连接的字符串
  21. */
  22. var camelizeRE = /-(\w)/g;
  23. var camelize = cached(function (str) {
  24. return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
  25. });
  26.  
  27. /**
  28. * Capitalize a string.//对一个字符串首字母大写
  29. */
  30. var capitalize = cached(function (str) {
  31. return str.charAt(0).toUpperCase() + str.slice(1)//把第一个字符串的首个字符大写,把除第一个字符的字符串返回与大写的首字符拼接
  32. });
  33.  
  34. /**
  35. * Hyphenate a camelCase string.用字符号连接一个驼峰的字符串
  36. */
  37. var hyphenateRE = /([^-])([A-Z])/g;
  38. var hyphenate = cached(function (str) {
  39. return str
  40. .replace(hyphenateRE, '$1-$2')//$1为正则表达式匹配的第一个元素$2为第二个元素
  41. .replace(hyphenateRE, '$1-$2')
  42. .toLowerCase()//使之最小化
  43. });
  44.  
  45. /**
  46. * Simple bind, faster than native//简单的绑定,会比原生的更快
  47. */
  48. function bind (fn, ctx) {
  49. function boundFn (a) {
  50. var l = arguments.length;//获取实参的数量
  51. return l
  52. ? l > 1//如果实参数量大于1
  53. ? fn.apply(ctx, arguments)
  54. : fn.call(ctx, a)//实参数量等于1
  55. : fn.call(ctx)//没有参数
  56. }
  57. // record original fn length//记录一下原始的形参数量
  58. boundFn._length = fn.length;
  59. return boundFn
  60. }
  61.  
  62. /**
  63. * Convert an Array-like object to a real Array.//转换一个类数组的对象为真正的数组
  64. */
  65. function toArray (list, start) {
  66. start = start || 0;//如果start存在则用start如果不存在则用0;
  67. var i = list.length - start;//设置新数组的数量
  68. var ret = new Array(i);//新建数组
  69. while (i--) {5
  70. ret[i] = list[i + start];
  71. }
  72. return ret
  73. }

vue.js源码学习分享(二)的更多相关文章

  1. vue.js源码学习分享(一)

    今天看了vue.js源码  发现非常不错,想一边看一遍写博客和大家分享 /** * Convert a value to a string that is actually rendered. *转换 ...

  2. vue.js源码学习分享(九)

    /* */ var arrayKeys = Object.getOwnPropertyNames(arrayMethods);//获取arrayMethods的属性名称 /** * By defaul ...

  3. vue.js源码学习分享(七)

    var _Set; /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) { // use ...

  4. vue.js源码学习分享(六)

    /* */ /* globals MutationObserver *///全局变化观察者 // can we use __proto__?//我们能用__proto__吗? var hasProto ...

  5. vue.js源码学习分享(八)

    /* */ var uid$1 = 0; /** * A dep is an observable that can have multiple * directives subscribing() ...

  6. vue.js源码学习分享(五)

    //配置项var config = { /** * Option merge strategies (used in core/util/options)//选项合并策略 */ optionMerge ...

  7. vue.js源码学习分享(四)

    /** * Generate a static keys string from compiler modules.//从编译器生成一个静态键字符串模块. */ function genStaticK ...

  8. vue.js源码学习分享(三)

    /** * Mix properties into target object.//把多个属性插入目标的对象 */ function extend (to, _from) { for (var key ...

  9. Vue.js 源码学习笔记

    最近饶有兴致的又把最新版 Vue.js 的源码学习了一下,觉得真心不错,个人觉得 Vue.js 的代码非常之优雅而且精辟,作者本身可能无 (bu) 意 (xie) 提及这些.那么,就让我来吧:) 程序 ...

随机推荐

  1. css3中的nth-child和nth-of-type的区别

    实例: 首先创建一个HTML结构 <div class="post"> <p>我是文章的第一段落</p> <p>我是文章的第二段落& ...

  2. GIMP如何制作一只大佬猫头像

    新建文件File -> 设置宽度为24px,高度5px:高级选项中将背景图片设置为无色 使用铅笔,前景色设为黑色,画出眼镜的模样,画出反光效果:将前景色设为灰色 放大图片,右击空白区域-> ...

  3. 基于Centos7.2搭建Cobbler自动化批量部署操作系统服务

    1       Cobbler服务器端系统环境配置 1.1     系统基本环境准备 [root@cobbler-server ~]# cat /etc/redhat-release CentOS L ...

  4. ccf 201712-2 游戏(Python实现)

    一.原题 问题描述 试题编号: 201712-2 试题名称: 游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐 ...

  5. 用Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围

    一.用默认设置绘制折线图 import matplotlib.pyplot as plt x_values=list(range(11)) #x轴的数字是0到10这11个整数 y_values=[x* ...

  6. GoF23种设计模式之行为型模式之访问者模式

    概述 表示一个作用于某对象结构中的各元素的操作. 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 适用性 1.一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依 ...

  7. pyecharts用法,本人亲测,陆续更新

    主题 除了默认的白色底色和dark之外,还支持安装扩展包 pip install echarts-themes-pypkg echarts-themes-pypkg 提供了 vintage, maca ...

  8. gcc——预处理(预编译),编译,汇编,链接

    一,预编译 操作步骤:gcc -E hello.c -o hello.i 主要作用: 处理关于 “#” 的指令 [1]删除#define,展开所有宏定义.例#define portnumber 333 ...

  9. CodeForce:732B-Cormen — The Best Friend Of a Man

    传送门:http://codeforces.com/problemset/problem/732/B Cormen - The Best Friend Of a Man time limit per ...

  10. 线段树:CDOJ1597-An easy problem C(区间更新的线段树)

    An easy problem C Time Limit: 4000/2000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Pr ...