延迟函数:
// 使用例子
_.delay(function(name) {
console.log('Hello ' + name);
}, 1000, 'David');
_.delay = function(fun, wait) {
var args = [].slice.call(arguments, 2);
return setTimeout(function(){
fun.apply(null, args);
}, wait);
}
XSS攻击:
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
中文名:跨站脚本攻击
英文名:Cross Site Scripting
HTML字符实体(Character Entities),转义字符串(Escape Sequence)。
HTML特殊转义字符列表
最常用的字符实体 Character Entities:
显示 | 说明 | 实体名称 | 实体编号 |
---|---|---|---|
半方大的空白 | |||
全方大的空白 | |||
不断行的空白格 | |||
< | 小于 | < | < |
> | 大于 | > | > |
& | &符号 | & | & |
“ | 双引号 | " | " |
© | 版权 | © | © |
® | 已注册商标 | ® | ® |
™ | 商标(美国) | ™ | ™ |
× | 乘号 | × | × |
÷ | 除号 | ÷ | ÷ |
function createEscape(map) {
var exp = "(?:"+ Object.keys(map).join('|') +")";
var regExp = new RegExp(exp, 'g');
var rep = function(match){
return map[match];
};
return function(value){
// 匹配到,则替换字符串
return regExp.test(value) ? value.replace(regExp, rep) : value;
};
}
// 将 escapeMap 作为参数传递进去,减少了作用域查询,提高了性能
_.escape = createEscape(escapeMap);
1.(pattern)
:匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 0…0…9 属性。要匹配圆括号字符,请使用 ‘(‘ 或 ‘)’。
2.(?:pattern)
:匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合一个模式的各个部分是很有用。例如, ‘industr(?:y|ies) 就是一个比 ‘industry|industries’ 更简略的表达式。
3.(?=pattern)
:正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,’Windows (?=95|98|NT|2000)’ 能匹配 “Windows 2000” 中的 “Windows” ,但不能匹配 “Windows 3.1” 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
4.(?!pattern)
:负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如’Windows (?!95|98|NT|2000)’ 能匹配 “Windows 3.1” 中的 “Windows”,但不能匹配 “Windows 2000” 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始