2012-11-14 21 views

回答

5

不能使用括号来重写字符串的单个字符;只有“getter”(即读取)访问可用。引用该文档(MDN):

对于字符使用访问括号符号,试图删除或 值分配给这些特性将不会成功。涉及的属性 既不可写也不可配置。

这就是问题的“正在发生什么”部分。而对于“如何更换”部分有(从an answer written long, long ago拍摄)一个有用的片段:

String.prototype.replaceAt = function(index, char) { 
    return this.slice(0, index) + char + this.slice(index+char.length); 
} 

,因为它是(咬延长JS原生对象的子弹),您可以使用 - 或注入该代码的方法在一些实用程序对象中(显然它应该重写一下,将源字符串作为其第一个参数并使用它而不是this)。

2

根据this question,这不是所有的浏览器中支持。

如果你的字符串不是太长,你可以做到这一点比较容易这样的:

var a="12345"; 
a = a.split(""); 
a[2]='9'; 
a = a.join(""); 
console.log(a);