Javascript 导致循环提前退出的String.prototype
我已经定义了一个名为Javascript 导致循环提前退出的String.prototype,javascript,prototype,Javascript,Prototype,我已经定义了一个名为cleanString.prototype的方法 String.prototype.clean = function() { clean = new Array(); tokens = [ ['&', '&'], ['"', '"'], ["'", '''], ['<',
clean
String.prototype的方法
String.prototype.clean = function() {
clean = new Array();
tokens = [
['&', '&'],
['"', '"'],
["'", '''],
['<', '<'],
['>', '>']
];
for(i = 0; i < this.length; i++) {
s = this[i];
for(a = 0; a < tokens.length; a++) {
if(tokens[a][0] == s) {
s = tokens[a][1];
break;
}
}
clean.push(s);
}
str = clean.join("");
return str;
}
为什么会这样,我做错了什么
输出除外:
<script>
<
>
下面是一个非常快速的方法:
var __entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': '"',
"'": ''',
"/": '/'
};
String.prototype.toHtml = function() {
return String(this).replace(/[&<>"'\/]/g, function (s) {
return __entityMap[s];
});
}
var\uuuu entityMap={
“&”:“&;”,
"": "",
'"': '"',
"'": ''',
“/”:“/;”
};
String.prototype.toHtml=函数(){
返回字符串(this).replace(/[&“\/]/g,函数{
返回uu entityMap[s];
});
}
我还没有找到一个更快的方法……这里有一个非常快速的方法来做同样的事情:
var __entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': '"',
"'": ''',
"/": '/'
};
String.prototype.toHtml = function() {
return String(this).replace(/[&<>"'\/]/g, function (s) {
return __entityMap[s];
});
}
var\uuuu entityMap={
“&”:“&;”,
"": "",
'"': '"',
"'": ''',
“/”:“/;”
};
String.prototype.toHtml=函数(){
返回字符串(this).replace(/[&“\/]/g,函数{
返回uu entityMap[s];
});
}
我还没有找到更快的方法……你有:
str = ["<script>", "<", ">"];
for(i = 0; i < 3; i++) {
console.log(str[i].clean());
}
你有:
str = ["<script>", "<", ">"];
for(i = 0; i < 3; i++) {
console.log(str[i].clean());
}
实际上并没有回答这个问题。我知道。。。现在真的很忙,想深入研究代码…只是想分享一下,因为我发现它是如此。这是非常快的相比,最好的选择,我可以认为,如果在目前,但它会很有趣,看看它如何进行,如果全表的约是使用。我认为它仍然会很快。我创建了jsPerf来测试小型数组映射的类似(但不同)功能。这里有一个链接:我尽可能地使用这种方法。如果替换表达式是从映射创建的(比如只使用一次IIFE和加载时的闭包),这样可以减少维护(只有一个地方可以编辑和维护列表,避免使用全局变量),那就好了。但请理解这并不是生产代码。:-)实际上并没有回答这个问题。我知道。。。现在真的很忙,想深入研究代码…只是想分享一下,因为我发现它是如此。这是非常快的相比,最好的选择,我可以认为,如果在目前,但它会很有趣,看看它如何进行,如果全表的约是使用。我认为它仍然会很快。我创建了jsPerf来测试小型数组映射的类似(但不同)功能。这里有一个链接:我尽可能地使用这种方法。如果替换表达式是从映射创建的(比如只使用一次IIFE和加载时的闭包),这样可以减少维护(只有一个地方可以编辑和维护列表,避免使用全局变量),那就好了。但请理解这并不是生产代码。:-)
String.prototype.clean = function() {
...
for(i = 0; i < this.length; i++) {
...
}
for (var i = 0; ...; ...) {