Vue 2 源码中的工具函数 - (二、转化类函数)

二、转化类函数

1. toString 转字符串

function toString (val) {
  return val == null
    ? ''
    : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
      ? JSON.stringify(val, null, 2)
      : String(val)
}

用 Array.isArray 判断变量是否为数组类型 或者 是Object类型,是则用 JSON.stringify 转换;

若为 其他 类型,用 String() 转换 。

2. toNumber 转数字

  • 通过parseFloat 转数字

    • 转换成功,将成功的部分返回;

    • 转换失败,返回原来的值。

    function toNumber (val) {
        var n = parseFloat(val);
        return isNaN(n) ? val : n
    }
    ​
    eg:
    toNumber(123)
    // 123
    toNumber('123')
    // 123
    toNumber('a')
    // 'a'
    toNumber('123a')
    // 123
    toNumber('a123')
    // 'a123'

3. camelize 连字符 转 小驼峰

var camelizeRE = /-(\w)/g;
var camelize = cached(function (str) {
    return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
});
​
eg:
camelize('on-click')   // onClick

4. capitalize 首字母大写

var capitalize = cached(function (str) {
    return str.charAt(0).toUpperCase() + str.slice(1)
});
​
eg:
capitalize('hello')   // 'Hello'

5. hyphenate 小驼峰 转 连字符

var hyphenateRE = /\B([A-Z])/g;
var hyphenate = cached(function (str) {
return str.replace(hyphenateRE, '-$1').toLowerCase()
});
​
eg: 
hyphenate('onClick'); // 'on-click'

6. toArray 类数组转为数组,默认从0位置开始

function toArray (list, start) {
    start = start || 0;
    var i = list.length - start;
    var ret = new Array(i);
    while (i--) {
        ret[i] = list[i + start];
    }
        return ret
}
​
eg:
function fn(){
  var arr1 = toArray(arguments);
  console.log(arr1); // [1, 2, 3, 4, 5]
  var arr2 = toArray(arguments, 2);
  console.log(arr2); // [3, 4, 5]
}
​
fn(1,2,3,4,5); 
​
​
toArray('1,2,3')
// ['1', ',', '2', ',', '3']

7. toObject 数组转对象

function toObject (arr) {
    var res = {};
    for (var i = 0; i < arr.length; i++) {
        if (arr[i]) {
            extend(res, arr[i]); // 合并
        }
    }
    return res
}
​
eg:
toObject(['hello', 'world'])
// {0: 'w', 1: 'o', 2: 'r', 3: 'l', 4: 'd'}

更多分享可以关注公众号:前端怪咖

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值