javascript - 在 javascript 对象内部时,[Function](用方括号括起来)意味着什么?

标签 javascript node.js javascript-objects

在各种函数上运行 console.log 时,我会在值部分找到值为 [Function: someFunctionName] 的对象属性。这是什么意思?我希望能够查看该函数的实际代码。当我看到这个语法时,我对实际记录的内容感到困惑。

这是一个示例:记录 mongoose.Schema 具有以下输出

{ [Function: Schema]
  reserved: 
   { _posts: 1,
     _pres: 1,
     validate: 1,
     toObject: 1,
     set: 1,
     schema: 1,
     save: 1,
     modelName: 1,
     get: 1,
     isNew: 1,
     isModified: 1,
     init: 1,
     errors: 1,
     db: 1,
     collection: 1,
     once: 1,
     on: 1,
     emit: 1 },
  interpretAsType: [Function],
  Types: 
   { String: { [Function: SchemaString] schemaName: 'String' },
     Number: { [Function: SchemaNumber] schemaName: 'Number' },
     Boolean: { [Function: SchemaBoolean] schemaName: 'Boolean', '$conditionalHandlers': [Object] },
     DocumentArray: { [Function: DocumentArray] schemaName: 'DocumentArray' },
     Array: { [Function: SchemaArray] schemaName: 'Array' },
     Buffer: { [Function: SchemaBuffer] schemaName: 'Buffer' },
     Date: { [Function: SchemaDate] schemaName: 'Date' },
     ObjectId: { [Function: ObjectId] schemaName: 'ObjectId' },
     Mixed: { [Function: Mixed] schemaName: 'Mixed' },
     Oid: { [Function: ObjectId] schemaName: 'ObjectId' },
     Object: { [Function: Mixed] schemaName: 'Mixed' },
     Bool: { [Function: SchemaBoolean] schemaName: 'Boolean', '$conditionalHandlers': [Object] } },
  ObjectId: { [Function: ObjectId] schemaName: 'ObjectId' } }

在几行中,存在 [Function] 语法,后面跟着似乎是第二个属性(即使没有中间逗号),如下所示:ObjectId: { [功能:ObjectId] schemaName:'ObjectId' } }

那么这些带有 [Function] 的属性实际表示什么?

最佳答案

我可以使用以下设置复制输出:

> function bar() {}
> bar.baz = 42;
> console.log({foo: bar});
{ foo: { [Function: bar] baz: 42 } }

所以

ObjectId: { [Function: ObjectId] schemaName: 'ObjectId' } }

表示ObjectId是对象的属性。该值是一个带有 name ObjectId 的函数。该函数有一个属性 schemaName,其值为 'ObjectId'


因此输出看起来有点奇怪,因为该函数具有自定义属性。这是相当罕见的。这将是没有自定义属性的输出:

{ foo: [Function: bar] }

关于javascript - 在 javascript 对象内部时,[Function](用方括号括起来)意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993246/

相关文章:

javascript - 如何根据特定条件更新 JSON 对象

javascript - React Apollo - 如何在单个 pollInterval 中进行多个查询

javascript - 调整图片大小,需要一个好的库

javascript - 使用 jQuery 清除表单历史记录

node.js - 流式传输 zip 文件,通过管道解压,通过管道输出?

node.js - newman CLI 在 teamcity 构建中返回 "error: unable to get local issuer certificate"

javascript - PhoneGap 应用程序不是 .live ('tap' ) iOS 上的事件

c++ - 在 C++ 中使用 Node.js 创建 TCP 连接

Javascript对象获取上面的值

javascript - 在 JavaScript 中创建新对象