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

    xiaoxiao2021-03-25  114

    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, 方便以后的调用, 查找速率快

    转载请注明原文地址: https://ju.6miu.com/read-13066.html

    最新回复(0)