JavaScript和x27之间的区别是什么;s对象文字和在控制台登录时显示为命名的对象?

JavaScript和x27之间的区别是什么;s对象文字和在控制台登录时显示为命名的对象?,javascript,json,Javascript,Json,我注意到,有时我在console.log对象时,会得到对象的文本,有时它的前缀似乎是console.logged 例如,如果我在将对象发送到服务器之前先将其记录到console.log中,我会得到: {id: 18, date: "2017-09-13T21:59:59.999Z"...etc} 但是,当我控制台从服务器调用中作为承诺返回的相同日志时,我得到: Resource {id: 18, date: "2017-09-13T21:59:59.999Z"...etc} 是什么导致了这种

我注意到,有时我在console.log对象时,会得到对象的文本,有时它的前缀似乎是console.logged

例如,如果我在将对象发送到服务器之前先将其记录到console.log中,我会得到:

{id: 18, date: "2017-09-13T21:59:59.999Z"...etc}
但是,当我控制台从服务器调用中作为承诺返回的相同日志时,我得到:

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

是什么导致了这种差异?一个对象的两种不同表示之间有什么区别呢?

它们有一个
构造函数
属性,它不指向
对象
,而是指向
资源

控制台给你提示,它并不总是按原样记录内容

例如:

var Cat = function (name) {
    this.name = name;
}

var paws = new Cat('paws');
console.log(paws);

将与示例中的
资源
类似。控制台在
构造函数
处暗示后者是命名类的实例:

class Resource {
   constructor() {
      this.id = ...;
      this.date = ...;
   }
}
或指定的构造函数:

function Resource() {
  this.id = ...;
  this.date = ...;
}
在这两种情况下,中的类或构造函数都使用
new
关键字实例化,但
class
是较新的ES6语法

console.log(new Resource())

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

后者是一个类实例。您可以使用资源的myObject实例检查这一点。