最近在工作中总是遇到一些关于扩展的问题 问题的产生都是开始写代码时没有考虑同类型扩展而遗留下来的
比如
// 一开始的需求是过滤字符串中的"["与"]"两个符号
var str = '[asdasdasdas[asdasdasd]asdasdasdas[asdasdas]asdasd[asd]]';
// 很简单 写个函数过滤掉
function fillterStr(data){
// data为传进来的字符串
... // 过滤逻辑 最终得出过滤后的data并返还
return data
}
// 调用也很简单
str = fillterStr(str);
// 过了一段时间发现还需要过滤字符串内的"{"与"}"两个字符
var str = '[asdasdasdas[asdas{dasd]asdas}dasd{as[asdasdas]asd}asd[asd]]';
// 好依然很简单 再写一个函数
function fillterBracketsStr(data) {
// data为传进来的字符串
... // 过滤逻辑 最终得出过滤后的data并返还
return data
}
// 调用就有些啰嗦了
str = fillterBracketsStr(fillterStr(str));
// 亦或者这样
str = fillterStr(str);
str = fillterBracketsStr(str);
// 长此以往 真是个可悲的代码
//我可以这样
var str = '[asdasdasdas[asdas{dasd]asdas}dasd{as[asdasdas]asd}asd[asd]]';
function strObj(str) {
this.str = str;
}
strObj.prototype = {
fillterBracketsStr: fillterBracketsStr() {
// data为传进来的字符串
var data = this.str;
... // 过滤逻辑 最终得出过滤后的data并返还
this.str = data;
return this;
},
fillterStr: function () {
// data为传进来的字符串
var data = this.str;
... // 过滤逻辑 最终得出过滤后的data并返还
this.str = data;
return this;
}
}
str = new strObj(str).fillterBracketsStr().fillterStr().str
我只是会喊666的小前端 生活为什么要这样对我
用正则将字符替换为空,比较麻烦的是特殊字符要在前面加两个反斜杠
需要过滤什么字符,直接往arr里面加就行了