考虑以下代码:
var foo = String.concat("foo","bar");
为什么这在Mozilla Firefox上运行正常,但在Google Chrome上运行时我得到“Uncaught TypeError:String.concat不是函数”?或者,展位工作正常:
var foo = String.prototype.concat("foo","bar");
答案 0 :(得分:3)
简单地说,因为Firefox正在使用String
对象做一些非标准的事情。
在String对象上,String实例方法也可用于JavaScript 1.6(不是ECMAScript标准的一部分),用于将String方法应用于任何对象:
上面链接的页面上有一个垫片,用于在通用String
上提供这些实例方法。不推荐使用它。使用标准化的方法在字符串实例上执行方法,例如
var foobar = "foo".concat("bar")
答案 1 :(得分:0)
Concat是一种实例方法。 Firefox做错了,让你这样称呼它。试试
"foo".concat("bar") // "foobar"
或
var x = "foo";
x.concat("bar"); // "foobar"
您不应该直接从构造函数对象调用原型方法。