Javascript中String.concat()的用途是什么?
我知道可以在Javascript中连接如下字符串:Javascript中String.concat()的用途是什么?,javascript,string,concatenation,Javascript,String,Concatenation,我知道可以在Javascript中连接如下字符串: str1 + str2; 或者像这样: [str1, str2].join(''); 为什么也有这样一个函数呢 str1.concat(str2) 快一点吗?对我来说,似乎更多的是打字。我猜这是在优化str1+str2之前使用的。这是正确的吗?它不会比操作员过载更快或更慢 似乎存在显著的性能差异,尤其是对于IE: 快一点吗 相反,它似乎可以大大减慢 String.prototype.concat方法非常通用(,pp.143-144):
str1 + str2;
或者像这样:
[str1, str2].join('');
为什么也有这样一个函数呢
str1.concat(str2)
快一点吗?对我来说,似乎更多的是打字。我猜这是在优化
str1+str2
之前使用的。这是正确的吗?它不会比操作员过载更快或更慢 似乎存在显著的性能差异,尤其是对于IE:
快一点吗
相反,它似乎可以大大减慢
String.prototype.concat方法非常通用(,pp.143-144):
ToString()
方法的每个对象上使用它。另见以下注释:
注意:
concat函数故意是泛型的;它不要求其此值是字符串对象。因此,它可以被转移到其他类型的对象中用作方法
因此可以使用
String.prototype.concat.call(myObject,…)代码>。请注意,还有一个Array.prototype.concat
方法,它也是非常通用的(第125页)。您可以将它作为参数传递给函数,这是您无法使用+
:-)@Cameron:这是错误的。你在传递一根绳子。我的意思是,你不能传递+
操作符,但是函数是一级对象。哦,我明白你的意思了。正确的。酷。=)说得好,说得好。。。这篇文章讨论了字符串上的运算符是如何在所有浏览器中都得到优化的,我敢肯定,从那时起,它才得到了改进。+1是一个非常有用的答案。这实际上解决了为什么会有String.concat()方法,而不是它是更快还是更慢。它应该更慢,因为它总是调用ToString()
并复制参数列表,而+
只连接字符串而不产生此开销。+
也可以应用于对象,并且执行完全相同的操作(toString
和concatenation)。虽然这是真的,+
将连接字符串,但没有说明如何进行连接。加法运算符仅定义为“返回由ToString(lprim)后跟ToString(rprim)连接而成的字符串”。字符串是如何连接的是一个实现细节。问题是,“连接”对象的能力并不是String.concat
存在的原因。我想真正的目的是让JavaScript看起来更像Java(它既有str+str
又有str.concat
)。