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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值