学习大神作品(vue源码二)

Symbol

判断数据类型的函数,返回值为bool值,数据基本类型为boolean、number、string、null、undefined,
symbol,es6新增属性,也是一种基本数据类型,不支持new symbol()语法,会报错,表示独一无二的,
例子:
1.什么时候返回symbol
let s1=Symbol()
console.log(typeof s1)输出Symbol
console.log(s1.toString(s1))输出Symbol
独一无二的体现
console.log(Symbol()===Symbol())返回true
但是传参
console.log(Symbol(“foo”)===Symbol(“foo”))即使参数一模一样返回的也是false

function isPrimitive (value) {
return (
        typeof value === 'string' ||
        typeof value === 'number' ||
         typeof value === 'symbol' ||
        typeof value === 'boolean'
      )
    }

isFinite

function isValidArrayIndex (val) {
      //parseFloat浮点数,数据类型转换为Number类型,
      var n = parseFloat(String(val));
      //isFinite用来检测无穷数,返回值为boor值
      //Math.floor()方法,取整,将小数点以后的数字全部去掉,不考虑四舍五入
      return n >= 0 && Math.floor(n) === n && isFinite(val)
    }

makeMap

function makeMap (
      str,
      expectsLowerCase
    ) {
      //Object.create()创建一个对象
      var map = Object.create(null);
      //用,将字符串分割为数组
      var list = str.split(',');
      for (var i = 0; i < list.length; i++) {
        //将数组的每一项存入map
        map[list[i]] = true;
      }
      return expectsLowerCase
      //区不区分大小写
        ? function (val) { return map[val.toLowerCase()]; }
        : function (val) { return map[val]; }
    }

清空数组

function remove (arr, item) {   
      if (arr.length) {
        var index = arr.indexOf(item);
        if (index > -1) {
          return arr.splice(index, 1)
        }
      }
    }
上一篇:10.symbol


下一篇:JavaScript高级程序设计第四版学习--第三章--第二部分