检查node.js googleapis 库的结构,我看到以下内容:
> const google = require("googleapis")
> google
{ GoogleApis: [Function: GoogleApis],
google:
GoogleApis {
_discovery: Discovery { transporter: DefaultTransporter {}, options: [Object] },
auth:
AuthPlus {
checkIsGCE: undefined,
jsonContent: null,
cachedCredential: null,
_cachedProjectId: null,
keyFilename: undefined,
scopes: undefined,
JWT: [Function: JWT],
Compute: [Object],
OAuth2: [Object] },
_options: {} } }
我不明白直接放在对象文字之前的标识符的含义。例如,“GoogleApis”,“Discovery”或“AuthPlus”。
显然,它们不是对象键:
> Object.keys(google)
[ 'GoogleApis', 'google' ]
> Object.keys(google.google)
[ '_discovery', 'auth', '_options' ]
它们恰好出现在对象文字之前:
> Object.entries(google.google)
[ [ '_discovery',
Discovery { transporter: DefaultTransporter {}, options: [Object] } ],
[ 'auth',
AuthPlus {
checkIsGCE: undefined,
jsonContent: null,
cachedCredential: null,
_cachedProjectId: null,
keyFilename: undefined,
scopes: undefined,
JWT: [Function: JWT],
Compute: [Object],
OAuth2: [Object] } ],
[ '_options', {} ] ]
出现在对象文字之前的标识符的含义是什么?例如:
"key": something {x:1, y:2, z:3}
(即我上一个例子中的“某事”)
谢谢!
答案 0 :(得分:1)
这意味着该对象是您正在查看其名称的类的实例化。尝试在您的节点中运行它:
class mySpecialClass {
constructor() {
this.myProp = 1;
}
}
const myInstant = new mySpecialClass();
myInstant
mySpecialClass {myProp:1}
答案 1 :(得分:0)
这是"类"你的对象。
答案 2 :(得分:0)
这些是类型。正如@Quentin评论的那样,你所看到的实际上并不是JavaScript或JSON源代码,而是一个非常适合人类消费的对象。如果类型信息可用于层次结构中的对象,则浏览器控制台和节点REPL将以您看到的格式提供此信息。
你可以很容易地看到这一点。创建一个类(或者你喜欢的构造函数),然后创建一个包含该类实例的对象:
> class MyClass { constructor () {this.num = 23; } }
[Function: MyClass]
> const obj = { instance: new MyClass () }
undefined
> obj
{ instance: MyClass { num: 23 } }
如您所见,REPL的输出告诉您属性instance
是MyClass
的实例。