|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Darth_EF 于 2021-6-1 15:43 编辑
ie中无法使用模板字符串`string=${string}`,于是我就写了这个。挺拉跨的其实。
- /**
- * 模版字符串
- * @param {String} _str 字符串
- * @param {Object} that this 指针
- * @param {Array} argArray 实参
- * @param {String} _opKey 插值关键文本 op
- * @param {String} _edKey 插值关键文本 ed
- * @returns {{str:String,hit:Array<String>}}
- */
- function templateStringRender(str,that,argArray,_opKey,_edKey){
- var opKey=_opKey||templateStringRender.templateKeyStr.op,edKey=_edKey||templateStringRender.templateKeyStr.ed;
- if(Object.keys(that).length){
- var temp=[],tempstr="",hit=[];
- var q,p;// q是左
- var headFlag=0,footFlag=0;
- for(p=0,q=0;str[p];++p){
- for(var i=0;i<opKey.length;++i){
- if(!(headFlag=str[p+i]==opKey[i])){break;}
- }
-
- if(headFlag){ // 检测到头
- temp.push(str.slice(q,p));
- q=p+2;
- while(1){
- ++p;
- for(var i=0;i<edKey.length;++i){
- if(!(footFlag=str[p+i]==edKey[i])){break;}
- }
- if(footFlag){
- tempstr=str.slice(q,p);
- oldL=temp.join("").length;
- temp.push((new Function(["tgt"],"return "+tempstr)).apply(that,argArray));
- hit.push({expression:tempstr,value:temp[temp.length-1]});
- q=p+1;
- break;
- }
- }
- }
- }
- temp.push(str.slice(q,p));
- return {str:temp.join(""),hit:hit};
- }
- }
- templateStringRender.templateKeyStr={op:"${",ed:"}"};
复制代码 |
|