Vue.js v2.1.10 源码探索 v1.0

来源:互联网 发布:华美网络飞天侠 编辑:程序博客网 时间:2024/04/28 00:10

Remember to keep it Simple, Stupid.Do one thing and do it best.

首先看下

JSON.stringify(str, replaceor, place)

源码片段 1

    function _toString(val)   {          // 排除 null  undefined          return val == null                 ? val + ''  // 稍作改动 源码直接输出 ''空字符串                 :   typeof val === 'object'                     ? JSON.stringify(val, null, 2);                     : String(val)   }

JSON.stringify(val, null, 2);

美化作用,第三个参数决定序列化后键值对前方的空格数
_toString 下划线的命名区分原生的toString

JSON.stringify({key:'Vue'})//"{"key":"Vue"}"JSON.stringify({key:'Vue'}, null, 4)//  "{//       "key":"Vue"//   }"

源码片段2: 函数当作值传递

     function map(              str,              isToLowercase     ){         var list  = str.split(','),             //创造一个Plainboject 没有原型对象             map   = Object.create(null),             i     = 0;              for(; i < list.length; i++)             {                  map [ list[i] ] = true;             }             return  isToLowercase                     ? function (val) {  return map[ val.toLowercase() ];}                     : function (val) {  return map[ val ];}      }           //为了判断是否是内置模块     var isIn  = map('slot,component', true);       typeof isIn  // function     isIn('sea')  // undefined     isIn('slot') // true

利用了闭包可以访问内部参数 isToLowercase ,
还有就是把函数当作了返回值, 可以再次进行相关属性的判断
精妙

0 0