2

MDN hereを読んでいるときに、出くわしました

JavaScript 1.8.5 以降、null で呼び出された toString() は [object Null] を返し、undefined は [object Undefined] を返します。これは、ECMAScript の第 5 版とその後の Errata で定義されています。toString を使用してオブジェクト タイプを検出するを参照してください。

やってみたObject(null).toString()Object(undefined).toString()

そして両方とも戻ってきました "[object Object]"

仕様によると、JS のプリミティブ型は Undefined、Null、Boolean、Number、または String です。

したがって、現時点では、すべてのブラウザがまだ実装していないと仮定するのは正しいでしょうか。

[object Undefined]& [object Null]?

4

1 に答える 1

2

this内部の [[Class]] を取得するには、値を の値として設定する必要がありますObject.prototype.toString()

Object.prototype.toString.call(null);      // [object Null]
Object.prototype.toString.call(undefined); // [object Undefined]

これは ECMAScript 5 で次のように定義されています。

8.6.2 オブジェクトの内部プロパティとメソッド

internal プロパティの値は、[[Class]]組み込みオブジェクトのすべての種類について、この仕様によって定義されています。[[Class]]ホスト オブジェクトの内部プロパティの値は、"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp", and "String". [[Class]] 内部プロパティの値は、さまざまな種類のオブジェクトを区別するために内部的に使用されます。この仕様は、プログラムがその値にアクセスする手段を提供しないことに注意してObject.prototype.toStringください (15.2.4.2 を参照)。

于 2013-05-31T19:17:49.440 に答える