在写封装一些URL请求时想到用模板的方式会很灵活,所以在网上看了下,把replace的第二个参数写成函数时还真有意思,省了写循环的事,呵呵!也实现了我认为必需得有的特性:设置默认值。
1 var urlList = { 2 type: { 3 a:'http://nootn.com/blog/?id={key}&name={name:asins}¬n={notn:js}', 4 //这里还有很多这样的URL 5 }, 6 url: function(T, O){ 7 var reg = new RegExp('\{([^}]+?)\}', 'g'); 8 var url = this.type[T].replace(reg, function(v,key){ 9 var arr = key.split(':'); 10 return encodeURIComponent( (O[arr[0]] != undefined ? O[arr[0]] : arr[1])||'' ); 11 }); 12 return url; 13 } 14 //这里还有其它函数 15 }
使用时就很方便了,http://www.sanhejobs.com
urlList.url('a', {key:'keyName', name:'nootn'}); //这样生成的URL就是http://nootn.com/blog/?id=keyName&name=nootn¬n=js
from http://nootn.com/blog/Develop/21/