【问题标题】:What's the difference between assigning a variable as Object and assigning a variable as Object Literal Notation/Object Constructor Notation? [duplicate]将变量分配为 Object 和将变量分配为 Object Literal Notation/Object Constructor Notation 有什么区别? [复制]
【发布时间】:2018-02-28 06:43:37
【问题描述】:

我只是碰巧注意到,当将变量分配为 Object 时,变量的类型是“函数”,而如果我使用对象文字符号 {} 将其分配为空对象或实例化为 @987654325 @,typeof 变量是一个对象。 这里有什么区别?

请注意,我不是在问对象字面量表示法和构造器表示法之间的区别。

【问题讨论】:

  • new Object()Object 不同。后者是构造函数!
  • typeof 不是函数,不需要括号。 typeof a; 就足够了。

标签: javascript


【解决方案1】:

全局符号Object 指的是对象构造函数。将Object 分配给变量只是复制该引用,与将引用分配给新的空对象 ({}) 完全不同。

也许你在想:

var a = new Object();
var b = {};

这两个语句做同样的事情。

【讨论】:

    【解决方案2】:

    当您将变量分配为 Object 时,它会引用 Object 函数,而当您执行 new Object 或 {} 时,它只会使用其父 Object 的构造函数方法创建一个普通对象

    你可以通过截图了解更多

    【讨论】:

      【解决方案3】:

      a = Object; 不会创建新对象。它将构造函数分配给您的变量a。要创建新对象,请使用以下代码:a = new Object();

      【讨论】:

        【解决方案4】:

        let a = new Object();

        创建一个新对象,打印为{}

        let a = {};

        创建一个新对象,打印为{}。与上面的方法并没有什么不同。

        let a = Object;

        Object 是构造函数,调用它将返回一个新对象,但更好的做法是使用 new 关键字进行代码约定。我个人选择在 JavaScript 中使用let a = {};。构造函数是一个函数,这就是为什么控制台告诉你它只是创建了一个函数。

        【讨论】:

          猜你喜欢
          • 2016-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-14
          • 2019-12-06
          • 1970-01-01
          相关资源
          最近更新 更多