在看input组件之前,先看下他提前引入的模块,migrating.js和emitter.js前面都讲解过了,这儿看下两个utils中的两个js文件。
一、merge.js
文件直接export出一个function,这个fun中,嵌套了两层循环。
先看下第一层循环,显然从形参target之后开始遍历,并对这些参数做了检测。
第二层循环这些引用类型的属性,并用hasOwnProperty保证这些属性是自有属性。如果该值不是undefined,就赋值到target的同名属性下。
所以这merge.js就是用于对象合并的,并且是浅拷贝。
// merge拷贝函数,将target之后的属性按键值赋值到target下 // 若该参数在target中,则会被覆盖 // 是浅拷贝,注意引用关系 export default function(target) { // 从target之后开始遍历参数 for (let i = 1,j = arguments.length; i < j; i++) { // 检测参数,排除false类(undefined等)的参数 let source = arguments[i] || {}; // 遍历循环参数 for (let prop in source) { // in会遍历原型上的属性,用hasOwnProperty确定是source自己的属性 if (source.hasOwnProperty(prop)) { let value = source[prop]; // 若是source自己属性,且不是undefined,则添加到target的prop的属性下 if (value !== undefined) { // 仅判断自身,注意被覆盖的问题 target[prop] = value; // 没有继续遍历value的层级,当对象时,会有引用关系 } } } } return target; };
二、shared.js
该文件下有两个方法,都比较的简单:
isDef
export function isDef(val) { // 不能为undefined且不能等于null return val !== undefined && val !== null; }
判断参数不是undefined且不是null,判断值是不是已经定义了(表面可以这么理解)。
isKorean
export function isKorean(text) { const reg = /([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi; return reg.test(text); }
该方法则是取判断对应字符是不是含有南北朝鲜字符(朝鲜和韩国)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。