12

在下面的代码中:-

 var x = { } ;
    console.log(typeof x);             // o/p is object
    console.log(x instanceof Object ); //o/p is true

如果我在最后一行使用“ object ”而不是“ Object ”,我会得到一个错误。为什么当第二行的 o/p 是带有小写“o”的对象时会这样?

4

3 回答 3

14

因为没有“对象”这样的东西。Typeof 不会将类返回给您 - 它会返回原始类型。例如,typeof "string"给你回“字符串”。

'Object' 是对象'primitive' 的构造函数 - 所以 anew Object给你一个'object'来使用..但不要期望能够创建一个'new object',因为'object'没有'不作为构造函数存在。

于 2012-10-02T18:46:36.943 回答
5

你得到一个错误,因为你没有定义一个名为object. 尝试读取尚未声明的变量是ReferenceError

Object变量是环境的原生变量,并且预定义为普通对象的构造函数。这就是为什么当你这样做时它起作用的原因instanceof Object。JavaScript 中的每个原生对象都是Object.

于 2012-10-02T18:45:40.820 回答
3

Javascript 是区分大小写的“对象”本质上是一个可以容纳任何东西的变量。“对象”是一个实际的 javascript 类型。

于 2012-10-02T18:46:12.850 回答