随性的知识记录 (最近遇到的困难)

1,关于正则表达式,在做文本编辑框的高级校验的时候,允许用户输入正则表达式来校验,但是用户输入的没有任何限制,例如:按照我们的设计用户输入的内容应该是这样的:^$|^[0-9A-E]+$,但是测试的正则是研发给的,而研发需要的正则表达式是这样的:/^$|^[0-9A-E]+$/。这样的话,我们拿到用户输入的内容,在通过RegExp转化为正则表达式,那么正则表达式会是:/\/^$|^[0-9A-E]+$/\/。

    所以为了兼容用户的这种操作,第一次使用了eval(),将用户本来已经输入的正确的内容,转化为表达式(字符串转表达式)。但是遇到一个问题:eval()防止不了XSS攻击。所以后来放弃了。现在没有想到更好的办法,只能针对性的对用户的操作做兼容。用户的输入情况可能有4种:1:/^$|^[0-9A-E]+$/     2:^$|^[0-9A-E]+$   3:/^$|^[a-z]+$/i   4:/^$|^[a-z+$/i  (本身就是一个错误的表达式,缺了一个符号)。希望能找到更好的办法来兼容。加油。。。。。

2.underscore

JavaScript是函数式编程语言,支持高阶函数和闭包。函数式编程非常强大,可以写出非常简洁的代码。例如Arraymap()filter()方法:

'use strict';
var a1 = [1, 4, 9, 16];
var a2 = a1.map(Math.sqrt); // [1, 2, 3, 4]
var a3 = a2.filter((x) => { return x % 2 === 0; }); // [2, 4]

现在问题来了,Arraymap()filter()方法,可是Object没有这些方法。

jQuery统一了不同浏览器之间的DOM操作的差异,让我们可以简单地对DOM进行操作,underscore则提供了一套完善的函数式编程的接口,让我们更方便地在JavaScript中实现函数式编程。

jQuery在加载时,会把自身绑定到唯一的全局变量 上,underscore与其类似,会把自身绑定到唯一的全局变量 上。

 

posted @ 2017-09-23 15:12  吴所事事  阅读(121)  评论(0编辑  收藏  举报