1

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

[ RowDataPacket { column: "value" } ]

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

库如何给{ column: "value" }对象一个“名称” RowDataPacket

我认为这可能与课程有关,但以下不起作用

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

console.log(new RowDataPacket())
4

1 回答 1

1

无论如何,您的class解决方案在 Chrome 的开发工具中确实有效;在 Firefox 的开发工具中似乎没有。(请注意,你selfconstructor你想要的地方使用过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.)

如果您愿意,您可以更进一步,也可以通过设置@@toStringTag对象的 (例如,类的原型)将其应用于单个对象,该对象在为对象Object.prototype.toString构建[object XYZ]字符串时使用,也用于通过一些开发工具来识别对象的“类型”:

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.

于 2017-11-07T13:37:46.350 回答