String.prototype.entityify = (function(){
var character = {
'<': '<',
'>': '>',
'&': '&',
'"': '"'
};
return function(){
return this.replace(/[<>&"]/g,function(c){
return character[c];
});
};
}())
- 使用js原型,将方法添加到String原型中,使其默认具备替换特殊字符功能
- 定义字符映射对象,直接使用[]获取对应替换值
- 使用闭包,避免污染,同时可以隐藏实现
- 使用了replace与正则表达式特性,replace只替换第一个匹配值,该段代码中使用正则表达式,并添加g全局属性,使其具备替换字符串中匹配到的所有内容
- replace第二个属性可以是方法(Function),如果是方法,则将匹配到的内容替换成方法的方法的返回值