次のことが Javascript で機能しないのはなぜですか?
> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]
しかし、これは機能します:
> a[1].toString()
"2"
次のことが Javascript で機能しないのはなぜですか?
> var a = [1, 2, 3]
undefined
> a.map(toString)
["[object Undefined]", "[object Undefined]", "[object Undefined]"]
しかし、これは機能します:
> a[1].toString()
"2"
toString
は引数を取る関数ではなく、グローバルオブジェクトのメソッドですが、メソッドはデフォルトで JS にバインドされていません。
a.map(function (x) { return x.toString(); })
あなたが望むように、あなたが望むことをします
a.map(String)
String
関数として呼び出されたコンストラクターは、その引数を文字列に強制するためです。
window.toString
関数を呼び出そうとしています Number.prototype
が、番号をレシーバーとして適用する必要があります。
より簡単な解決策は、String
コンストラクターを使用することです。
a.map(String)