Javascript的String.replace函数,主要用来替换字符串的。今天我们就不说一般用法了,比如传字符串,正则表达式来处理,jser们应该都会吧!哈,小前给大伙儿介绍一种replace函数的装逼用法,传入一个处理函数,这个函数的return值就是要替换成的内容。
例如,我们要获取id为div1和div2的两个元素的高度和宽度,大家可能会想到使用split切分字符串,然后用Array.forEach做循环。例如下面的代码:
//普通写法 "div1 div2".split(' ').forEach(function(a,i){ console.log(a); });
这样做对于支持forEach的高级浏览器还是可以的,否则需要扩展数组原型了,不建议扩展原型,最好使用内置的函数。即使不扩展原型提供个额外的函数来操作,就又是浪费。
所以这里我们可以这样做:
//装逼写法 var s1 = 'div1 div2', s2 = 'Width Height', r = /\S+/g, wh = {}; s1.replace(r, function(a){ var elem = document.getElementById(a); wh[a] = {}; s2.replace(r, function(b){ wh[a][b] = elem['offset' + b] || elem['client' + b]; }); }); console.log(wh);
可能有人会说可读性不高,哈!就是用来装逼的。当然你完全可以用getElementsByName来遍历解决,完全可以无视。


看着蛋疼