Javascript/NodeJS:命名组 RegExp 匹配:[对象:空原型] 是什么意思



参见下面的 NodeJs:

$ node
Welcome to Node.js v12.3.1.
> regexp = /cerca (?<word>.+) su (?<dictionary>wikipedia|treccani|garzanti|google)/i
> string = 'cerca chatbots su wikipedia'
> matchData = string.match(regexp)
[
  'cerca chatbots su wikipedia',
  'chatbots',
  'wikipedia',
  index: 0,
   input: 'cerca chatbots su wikipedia',
   groups: [Object: null prototype] {
     word: 'chatbots',
     dictionary: 'wikipedia'
  }
]
> matchData.groups.word
'chatbots'
> matchData.groups.dictionary
'wikipedia'

正则表达式匹配对我来说似乎还可以,并且命名组被完美捕获,但是控制台.log节点 REPL 中的 [对象:空原型] 语句是什么意思?

谢谢

[Object: null prototype]表示对象的__proto__等于undefined_proto_ atribute 用于 javascript 遗传,因此它用于日志以辅助类的识别。

发生这种情况是因为groups只有找到的键作为键(缺少__proto__(。通过这种方式,您可以以 100% 的准确度for(let key in matchData.groups){...}迭代键,key不会假定"__proto__"值。这种设计可能是不必要的,但它是有效的。

您可以使用Object(matchData.groups){...matchData.groups}创建公共对象

最新更新