【问题标题】:How to find if variable call or function call?如何查找是变量调用还是函数调用?
【发布时间】:2020-10-31 22:37:07
【问题描述】:

注意:这个问题是基于firestore admin SDK,但它是一个通用的JS问题。

使用 JS firestore admin SDK,这让我很困惑。比较这两个例子

请求一个数据库值

admin.firestore().collection('my-Col').doc('my-doc').get().then(...)

获取服务器时间戳

admin.firestore.FieldValue.serverTimestamp()

第一个例子是admin.firestore(),第二个例子是admin.firestore

如果作为函数调用,如何有第一个行为,如果作为对象键调用,如何有另一个行为?

也许admin.firestore() 调用了构造函数...但是,如何通过admin.firestore 获取静态值(无论之前调用的构造函数)?

【问题讨论】:

  • 我认为您的问题正文与标题不符,所以我不太确定您想知道什么。但是 JavaScript 函数也可以有任意属性,function something() { ... }; something.prop = "value"

标签: javascript google-cloud-firestore javascript-objects


【解决方案1】:

来自@jonrsharpe:

“JavaScript 函数也可以有任意属性”

你给了我小费!搭建一个小例子进行测试

const bill = () => ({
  friend: "boule"
});

bill.name = "bill";

const base = {
  bill: bill
};

console.log(base.bill().friend);
// -> boule
console.log(base.bill.name);
// -> bill

这就是我要找的。非常感谢。

【讨论】:

    【解决方案2】:

    在 Javascript 中,函数也可以有自己的属性。在 javascript 中,您有原始值(布尔值、数字、字符串、null 和未定义)或(所有其他)对象。函数也不例外。它们被称为一流的对象。一流的对象是,引用自Wikipedia

    在编程语言设计中,给定编程语言中的一等公民(也是类型、对象、实体或值)是支持其他实体通常可用的所有操作的实体。这些操作通常包括作为参数传递、从函数返回、修改和分配给变量。

    当您执行以下操作时:

    admin.firestore()
    

    您将获得firestore 返回的值。碰巧,这个返回的值有一个名为collection(一个函数)的属性。

    但是,当你这样做时:

    admin.firestore.FieldValue
    

    您正在访问firestore 上的FieldValue 属性。

    【讨论】:

    • @Franck 关于如何在 cmets 中表达感谢的问题一直在激烈讨论。所以他们添加了有争议的拍手功能。您可以在这里了解更多信息:stackoverflow.blog/2020/06/17/…
    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多