小编Rob*_*Rob的帖子

JavaScript 链式连接函数?

请不要使用 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)

javascript string join concatenation method-chaining

2
推荐指数
1
解决办法
3101
查看次数