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

    xiaoxiao2021-03-25  139

    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 , 还有就是把函数当作了返回值, 可以再次进行相关属性的判断 精妙

    领个红包,小赞赏一下吧

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

    最新回复(0)