我注意到有时候我在console.log中找到一个对象,我得到了对象文字,有时似乎 console.logged 的前缀是一个名字。
例如,如果我在将对象发送到服务器之前对其进行控制,我得到:
{id: 18, date: "2017-09-13T21:59:59.999Z"...etc}
但当我通过服务器调用控制同一个日志作为承诺返回时,我得到:
Resource {id: 18, date: "2017-09-13T21:59:59.999Z"...etc}
导致这种差异的原因是什么?什么似乎是一个对象的两个不同表示之间有什么区别?
答案 0 :(得分:1)
他们有一个constructor
属性,不指向Object
,但在这种情况下指向Ressource
。
答案 1 :(得分:1)
控制台正在给你提示,它并不总是按原样记录。
例如:
var Cat = function (name) {
this.name = name;
}
var paws = new Cat('paws');
console.log(paws);
在您的示例中,的行为类似于Resource
。控制台正在暗示constructor
。
答案 2 :(得分:1)
后者是命名类的实例:
class Resource {
constructor() {
this.id = ...;
this.date = ...;
}
}
或命名构造函数:
function Resource() {
this.id = ...;
this.date = ...;
}
在这两种情况下,使用new
关键字实例化的类或构造函数,但class
是较新的ES6语法。
console.log(new Resource())
你的第一个例子只是一个没有构造函数的普通对象。