为什么
[].reverse.call("string");
在调用字符串上的所有其他数组方法时,失败(firefox中的错误,即返回chrome中的原始字符串)?
>>> [].splice.call("string",3) ["i","n","g"] >>> [].map.call("string",function (a) {return a +a;} ) ["ss","tt","rr","ii","nn","gg"]
解决方法
因为.reverse()修改了一个数组,并且字符串是不可变的.
您可以借用Array.prototype.slice转换为数组,然后反向并加入它.
var s = "string"; var s2 = [].slice.call(s).reverse().join('');
请注意,在旧版本的IE中,您无法像Array一样操纵字符串.