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

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

toNum(),目的是转化值为数字

源码片段1

function toNum(val) {
      var num = parseFloat(val);
      return isNaN(val)? val : num;
  }

parseFloat( ) parseInt( ) Number( ) 为什么选择parseFloat( )

parseFloat('111.111');     // 111.111
parseInt('111.111') ;       // 111 只截取整数部分
Number('111.111') ;       // 111.111

Number('1a');      // NaN
parseFloat('1a')   // 1  只截取有效数字 

parseInt(‘ab’) // NaN
parseInt(‘ab’, 16) // 171
//parseInt(num, radix) 可以指定基数,最好在使用的时候明显指定
parseInt(‘11’, 10) // 11 指出是在十进制下的转换

源码片段2

  var class2type = {};
  var toStirng   = class2Type.toString;

  'Boolean Number Symbol String Object Function Array Date RegExp Error'
  .split(' ').forEach(function ( name ){
            class2type[ '[object' + name +']' ] = name.toLowercase()
       })
  function type(val) {
                if(val == null) {
                       //  undefined  null 属于特殊类型
                        return val + '';
                     }
                if( val !== val ) {
                       //  NaN 也特殊对待
                          return val + ''
                       }     
               return  typeof  val === 'object'?
                       class2type[  toString.call(val) ] : typeof val;        
         }
  var removeAitem  = [];
  var indexOf      = removeAitem.indexOf;
  function remove$1(arr, item) {
       if(type(arr) === 'array') {  //稍作修改
             var pos = arr.indexOf(item);
             if(pos > -1) {
                       return arr.splice(pos, 1);
              }
       }

小结:
arr.forEach(function (item, index));

arr.indeOf(item); arr中有item 返回 -1 有item 返回在数组中的位置 postion

源码片段3 检测是否是私有属性

    var hasOwnProp = Object.prototype.hasOwnProperty;

         function hasOwn(obj, prop) {
                   return hasOwnProp.call(obj, prop);
         }

小结: 缓存原型链上的hasOwnProperty, 方便以后的调用, 查找速率快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值