JavaScript 的对象文字和控制台记录时似乎命名的对象有什么区别?



我已经注意到有时候我会有机。姓名。

例如,如果我在将其发送到服务器之前委托对象。

{id: 18, date: "2017-09-13T21:59:59.999Z"...etc}

但是,当我安装了与服务器调用的承诺返回相同的日志时,我会得到:

Resource {id: 18, date: "2017-09-13T21:59:59.999Z"...etc}

是什么原因导致这种差异?似乎对象的两个不同表示之间有什么区别?

后者是命名类的实例:

class Resource {
   constructor() {
      this.id = ...;
      this.date = ...;
   }
}

或命名构造函数:

function Resource() {
  this.id = ...;
  this.date = ...;
}

在两种情况下,使用new关键字实例化的类或构造函数,但是class是较新的ES6语法。

console.log(new Resource())

您的第一个示例只是一个没有构造函数的普通对象。

它们具有constructor属性,该属性指向Object,而是指向Ressource

控制台为您提供提示,并不总是按原样记录。

例如:

var Cat = function (name) {
    this.name = name;
}
var paws = new Cat('paws');
console.log(paws);

在您的示例中将与Resource相似。控制台暗示constructor

最新更新