• vue.js源码学习分享(二)


    /**
     * Check if value is primitive//检查该值是否是个原始值
     */
    function isPrimitive (value) {
      return typeof value === 'string' || typeof value === 'number'
    }
    
    /**
     * Create a cached version of a pure function.//创建一个纯粹的函数的缓存版本
     */
    function cached (fn) {
      var cache = Object.create(null);//创建一个缓存对象
      return (function cachedFn (str) {//返回一个函数
        var hit = cache[str];//以函数的参数为键
        return hit || (cache[str] = fn(str))//如果缓存对象中存在这个键,那么就从缓存中返回这个函数,如果没有就把这个函数赋值到缓存对象中并且返回
      })
    }
    
    /**
     * Camelize a hyphen-delimited string.//驼峰化一个连字符连接的字符串
     */
    var camelizeRE = /-(w)/g;
    var camelize = cached(function (str) {
      return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
    });
    
    /**
     * Capitalize a string.//对一个字符串首字母大写
     */
    var capitalize = cached(function (str) {
      return str.charAt(0).toUpperCase() + str.slice(1)//把第一个字符串的首个字符大写,把除第一个字符的字符串返回与大写的首字符拼接
    });
    
    /**
     * Hyphenate a camelCase string.用字符号连接一个驼峰的字符串
     */
    var hyphenateRE = /([^-])([A-Z])/g;
    var hyphenate = cached(function (str) {
      return str
        .replace(hyphenateRE, '$1-$2')//$1为正则表达式匹配的第一个元素$2为第二个元素
        .replace(hyphenateRE, '$1-$2')
        .toLowerCase()//使之最小化
    });
    
    /**
     * Simple bind, faster than native//简单的绑定,会比原生的更快
     */
    function bind (fn, ctx) {
      function boundFn (a) {
        var l = arguments.length;//获取实参的数量
        return l
          ? l > 1//如果实参数量大于1
            ? fn.apply(ctx, arguments)
            : fn.call(ctx, a)//实参数量等于1
          : fn.call(ctx)//没有参数
      }
      // record original fn length//记录一下原始的形参数量
      boundFn._length = fn.length;
      return boundFn
    }
    
    /**
     * Convert an Array-like object to a real Array.//转换一个类数组的对象为真正的数组
     */
    function toArray (list, start) {
      start = start || 0;//如果start存在则用start如果不存在则用0;
      var i = list.length - start;//设置新数组的数量
      var ret = new Array(i);//新建数组
      while (i--) {5
        ret[i] = list[i + start];
      }
      return ret
    }
  • 相关阅读:
    linux系统中完整删除逻辑卷、卷组、物理劵
    linux系统中逻辑卷缩容步骤
    问题
    新的一天开始了
    Solaris的版本命名
    Sun公司的操作系统:Solaris简介
    培训经历:Awakening the Dragon Within
    大本计算机专业该怎么学习?
    windbg 使用
    ubuntu 常用技巧
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/6669633.html
Copyright © 2020-2023  润新知