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