2

次のことが Javascript で機能しないのはなぜですか?

> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]

しかし、これは機能します:

> a[1].toString()
"2"
4

2 に答える 2

4

toStringは引数を取る関数ではなく、グローバルオブジェクトのメソッドですが、メソッドはデフォルトで JS にバインドされていません。

a.map(function (x) { return x.toString(); })

あなたが望むように、あなたが望むことをします

a.map(String)

String関数として呼び出されたコンストラクターは、その引数を文字列に強制するためです。

于 2013-06-25T19:43:42.560 に答える
4

window.toString関数を呼び出そうとしています Number.prototypeが、番号をレシーバーとして適用する必要があります。

より簡単な解決策は、Stringコンストラクターを使用することです。

 a.map(String)
于 2013-06-25T19:44:04.880 に答える