Object.prototype.valueOf.call("abc")
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
Object.prototype.valueOf.call(new String("abc"))
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
MDN によると、JavaScript はオブジェクトをプリミティブ値に変換するために valueOf メソッドを呼び出します。オブジェクトにプリミティブ値がない場合、valueOf はオブジェクト自体を返し、次のように表示され
ます
。プリミティブ
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
を返します。定義に反していませんか?なぜその形式で返すのですか?今、これは混乱を引き起こしました.Object.prototype.valueOf.call(array)が配列などに対して呼び出された場合に何が返されるかを知る方法オブジェクト。
また、ログに記録されたときにメソッド{}.valueOf()
からの戻り値が 何も表示されないため、戻りオブジェクトフォームが表示される理由[].valueOf()