【问题标题】:Set object name?设置对象名称?
【发布时间】:2017-11-07 13:31:52
【问题描述】:

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

[ RowDataPacket { column: "value" } ]

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

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

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

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

console.log(new RowDataPacket())

【问题讨论】:

  • 没错,RowDataPacket 是一个类,并且在获取RowDataPacket 实例的数组。

标签: javascript node.js mysqljs


【解决方案1】:

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

【讨论】:

  • 我打错了,应该是this.column 而不是self.column(没有抛出错误,因为self 是有效的关键字)。太多的蟒蛇...
猜你喜欢
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多