参见下面的 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}
创建公共对象