Object.prototype.toString.call(anything)
結果は常にです。これは、いくつかのことの1つ[object Something]
である可能性がありますSomething
。私の質問は、なぜ「オブジェクト」の部分がそこにあるのかということです。いつもそこにあるのは不必要に思えます。渡された引数については何も教えてくれません。
Object.prototype.toString.call(null);
=> [object Null]
Object.prototype.toString.call(undefined);
=> [object Undefined]
null
とundefined
はオブジェクトではない(そして失敗する)のでCheckObjectCoercible
、「オブジェクト」の部分は実際には無意味に見えます。
もともと「オブジェ」の部分がそこに置かれたのには、それ以来その理由が失われていたとしても、何らかの理由があったと思いますが、今では歴史的な理由で保存されています。
誰かがこれに光を当てるのを手伝ってもらえますか?
明確にするために、私はオブジェクトObject.prototype.toString
の(タイプ)を取得するためにどのように使用できるかをすでに知っています。[[Class]]
私の質問は、返される文字列の形式の理由、特に最初の「オブジェクト」部分に関するものです。この部分に理由があったかどうか、またはこの部分に将来の理由があるかどうかを知りたいです。将来的には「オブジェクト」以外のものを返す可能性がありますか?常に「オブジェクト」を返すことを期待できますか?もしそうなら、なぜそれはそれを返すのですか?入力が何であっても、関数が常に同じものを返すことを望むのは誰ですか?