1

Dmitry Baranovskiy のブログ( Raphaelの作成者) によると、Javascript には 6 つの型しかありません。

Object、、、、、、および。Number_ String_ Boolean_NullUndefined

それぞれは、(たとえば)次の方法で簡単に確認できます。

Object.prototype.toString.apply(undefined) //"[object Undefined]"

しかし、どうですか:

Object.prototype.toString.apply(new Date()) //"[object Date]"

Object.prototype.toString.apply(/a/)//"[object RegExp]"

...そしてArrayFunctionsまた...

彼らは違うのですか?なぜ彼らは言及されていないのですか?

PS:

次のようなあまり具体的でないチェックに関連していますか?

>>typeof [] //"object"?

4

2 に答える 2

1

ECMAScript 言語仕様、5.1 版、§8 によると:

ECMAScript 言語タイプは、ECMAScript プログラマーが ECMAScript 言語を使用して直接操作する値に対応します。ECMAScript 言語の型は、UndefinedNullBooleanStringNumber、およびObjectです。

この定義から、関数、配列、および正規表現はObject型のようです。

関数では奇妙に思えるかもしれません。他のオブジェクトではできないことを関数で行うことができるからです。それらを呼び出すことができます。ただし、この特性は単なる内部プロパティであり、すべてのオブジェクトが持つわけではありません (§8 にもあります):

表 9 — 一部のオブジェクトのみに定義された内部プロパティ

[[Call]]オブジェクトに関連付けられたコードを実行します。関数呼び出し式を介して呼び出されます。

于 2013-06-07T10:31:43.273 に答える
0

Node、Element、および HTMLElement は型ではありません。Array、Date、および RegExp と同様に、これらは単なるオブジェクトです。

http://blogs.adobe.com/webplatform/2012/08/27/javascript-types/#comment-6038

于 2013-06-07T08:54:17.210 に答える