2016-11-15 5 views
0

へのダイレクトアクセスは、次のコードを考える:これはMozilla Firefoxの上で正常に動作しますが、私は「キャッチされない例外TypeErrorを:String.concatは関数ではありません」を取得なぜJS concatメソッド

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

を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

などの文字列インスタンスでメソッドを実行する標準化された方法を使用しますが、私の場合は、文字列として2つの数値を連結する必要があります。 I.E .: ''var a = [1,2,3,4]; ' ' var foo = String.concat(a [0]、a [1]); // 012を生成する必要がありますか? 'var a = [1,2,3,4];' 'var foo = String.prototype.concat(a [0] ]、a [1]); ' ? –

+0

a [0] .toString()。concat(a [1] .toString()) –

0

、連結方式は、インスタンスメソッドです。 Firefoxはあなたがそれをそのように呼ぶことを間違っている。あなたが直接コンストラクタオブジェクトからプロトタイプメソッドを呼び出すことができないようにする必要があり

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

または

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

を試してみてください。