永发信息网

javascript 字符替换,eval作用域,angularjs 替换原理

答案:1  悬赏:80  手机版
解决时间 2021-02-05 01:19
我现在有
一个对象 var data = {a:"这个属性的值"};
一个字符串 var ss = "sssdfdf{{a}}sss{{1==2 ? a : ‘错误的值’ }}sss";
想要得到“sssdfdf这个属性的值sss错误的值sss”。
就像angularjs的数据展示。
尝试过使用eval,但是要把data的属性全部赋给window才行,不合适,
ss.replace(/\{\{(.*?)\}\}/g,function(){ return eval(arguments[0].substr(2,arguments[0].length).substr(0,arguments[0].length-4));});
在线等答案
最佳答案
嗯,可以得,把变量的作用域由window用with改成对象就行了。

替换的时候,正则表达式捕获的分组也是会传递给替换函数得。
var data={a:"这个属性的值"};
var ss="sssdfdf{{a}}sss{{1==2 ? a : '错误的值' }}sss";
var result=ss.replace(/\{\{(.*?)\}\}/g,function(find, group1){
with(data){
return eval(group1);
}
});
console.log(result);

注意这个要求字符串内的表达式符合js语法要求,‘错误的值’的引号要用半角的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【nearme】com.nearme.themespacelib翻译成中
海信科龙容声诸葛专卖店这个地址在什么地方,
冻青的意思是什么啊?知道的请说下!
各位大神,姨妈链好还是刺杀链好
挺早以前的歌了,一首说唱的,是一个男生说自
老公37岁我29岁可一个月就几次为这我们经常吵
奶油是素食吗
赣州脐橙生产许可证编号
IPAD没有home键,卡屏了怎么办?
佛山一环超速上了显示屏,会罚款扣分吗?
16.17.急
农行网银激活后怎样用金顺使用
北街/李杨线(路口)在什么地方啊,我要过去处
乳驹的意思是什么啊?知道的请说下!
悦悦食香阁地址有知道的么?有点事想过去
推荐资讯
善加财财佛怎么样?
祆庙火的意思是什么啊?知道的请说下!
从苏州越溪到木渎金桥木胥路16号怎么走
内地居民,做劳工可以移民到澳门吗
付坎新寨怎么去啊,有知道地址的么
牛积塘地址有知道的么?有点事想过去
园隆茶庄地址在什么地方,想过去办事
素积的意思是什么啊?知道的请说下!
圣安地列斯联机的自由街区 现代都市注册ID问
红草帽皮鞋地址在什么地方,想过去办事
操宰的意思是什么啊?知道的请说下!
长铗归来的意思是什么啊?知道的请说下!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?