记录一个效仿VUE检查是否为html标签的高性能的方法

假如,你需要检测一批标签是否为html标签,可以这样:

 let tags = "div,p,a,img,ul,li,i,br".split(","); // 限定范围
 function makeMap(tag) { // 检测方法
   let map = new Map();
   tags.forEach((item) => (map[item] = true));
   return function (tagName) {
     return !!map[tagName.toLowerCase()]
   };
 }
 let isHtmlTag = makeMap( tags )
 isHtmlTag( 'div' )

分析:该方法应用到了js的函数柯里化概念(js的函数柯里化:简单理解就是把一个接受多参数的函数写成只接受一个原函数第一个参数,且返回一个接受剩余参数的新函数的玩法)
好处:此处如果使用常规的方式进行检测,检测量很大时,会很消耗性能,此种方式在检测量较大时,也只是进行一次迭代操作,并被闭包缓存下来,极大的提高性能的利用率;
当然此方法不只限于检测标签,还可以进行拓展,比如检测svg等等,可以进行自由发挥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值