2016-11-15 8 views
0

Учитывая следующий код:JS Прямой доступ к методу Concat

var foo = String.concat("foo","bar");

Почему это прекрасно работает на Mozilla Firefox, но я получаю «неперехваченным TypeError: String.Concat не является функцией» при работе на Google Хром? Кроме того, стенд отлично с работы:

var foo = String.prototype.concat("foo","bar");

ответ

3

Проще говоря, потому что Firefox делает что-то нестандартное с объектом String.

The String instance methods are also available in Firefox as of JavaScript 1.6 (not part of the ECMAScript standard) on the String object for applying String methods to any object:

Существует прокладка, расположенная на выше связаны страницах, чтобы обеспечить эти методы экземпляра на родовом String. Использование не рекомендуется. Используйте стандартизованный способ выполнения методов в строковых экземплярах, таких как

var foobar = "foo".concat("bar") 
+0

Yeap, но в моем случае мне нужно конкатцировать два числа, как строку - чтобы не суммировать их. I.E .: 'var a = [1,2,3,4];' 'var foo = String.concat (a [0], a [1]); // Производит 12 - Не 3' В этом случае мне нужно использовать: 'var a = [1,2,3,4];' 'var foo = String.prototype.concat (a [0 ], a [1]); ' Право? –

+0

a [0] .toString(). Concat (a [1] .toString()) –

0

Concat является методом экземпляра. Firefox делает что-то неправильно, позволяя вам так называть. Попробуйте

"foo".concat("bar") // "foobar" 

или

var x = "foo"; 
x.concat("bar"); // "foobar" 

Вы не должны быть в состоянии вызвать методы прототипа из объекта конструктора непосредственно.