请不要使用 jQuery!
网上说应该避免使用 JS 的原生String.concat()和join()函数,因为它们的性能较差,而一个简单的+=赋值的for()循环应该会运行得更快。
所以我尝试用纯 JavaScript 创建一个函数来连接字符串。这在某种程度上是我的设想:
我想要一个主函数concatenate(),它将连接所有传递的参数,并在每个连接的参数之后插入一个变量字符串(最后一个参数除外)。
如果 main 函数是单独调用的,并且没有链式.using()函数,则该变量字符串应该为空字符串,这意味着结果中没有分隔符。
我想要一个链接的子函数.using(),它会告诉主concatenate()函数除了默认的 '' 空字符串之外要在每个连接段之后添加哪些特定字符串。
理论上,它应该像这样工作:
concatenate('a','b','c'); /* result: 'abc' */
concatenate('a','b','c').using('-'); /* result: 'a-b-c' */
Run Code Online (Sandbox Code Playgroud)
我想避免使用两个单独的函数,例如concatenate()和concatenateUsing(),因为concatenateUsing()变体必须利用特殊的常量参数(例如argument[0]或argument[arguments.length-1])注入的分离器会非常不整洁。另外,我总是忘记那是哪一个。
我还想避免使用具有两个单独的子方法的取代Concatenate对象,例如Concatenate.strings()和Concatenate.using()或类似方法。
这是迄今为止我失败的一些尝试......
尝试#1:
function concatenate()
{
var result="";
if(this.separator===undefined){var separator=false;}
for(var i=0; i<arguments.length; i++)
{result += arguments[i] + ((separator && (i<arguments.length-1))?separator:'');}
this.using=function(x)
{
this.separator=x; …Run Code Online (Sandbox Code Playgroud)