设置对象名称?

时间:2017-11-07 13:31:53

标签: javascript node.js mysqljs

mysqljs中,连接查询的返回值打印为

[ RowDataPacket { column: "value" } ]

相当于[ { column: "value" } ]

图书馆如何为{ column: "value" }对象提供"名称" RowDataPacket

我认为这可能与课程有关,但下面没有工作

class RowDataPacket {
   constructor() {
      self.column = "value";
   }
}

console.log(new RowDataPacket())

1 个答案:

答案 0 :(得分:1)

您的class解决方案 无论如何都可以在Chrome的devtools中运行;不是,它似乎在Firefox的devtools中。 (请注意,您在self constructor中使用了this,但是它不会影响devtools中的结果,除了属性不在那里。)

class RowDataPacket {
   constructor() {
      this.column = "value";
   }
}

console.log("one", new RowDataPacket());
console.log("array of one", [new RowDataPacket()]);
(Look in the real console.)

如果您愿意,可以进一步使用它,并通过设置{{3}使用的对象的@@toStringTag(例如,类的原型),将其应用于单个对象。在为对象构建[object XYZ]字符串时,某些devtools也使用它来标识对象的“类型”:

const myObject = {};
myObject[Symbol.toStringTag] = "myObject";

console.log(myObject);
console.log("Default toString", String(myObject));
(Look in the real console.)

在类原型上使用它的示例:

class RowDataPacket {
}
RowDataPacket.prototype[Symbol.toStringTag] = RowDataPacket.name;
console.log("one", new RowDataPacket());
console.log("Default toString", String(new RowDataPacket()));
Look in the real console.