Javascript 对象属性(在 Node 中)未被记录或使用不同的名称记录

Javascript Object properties (in Node) not getting logged or logged with a different name

我正在使用来自 felixge 的强大的 Node 包。这更像是一个 Javascript 问题,而不是一个特定于强大的问题,或者我认为是这样。

如果我在 MYOBJ 上执行 console.log,我会得到以下信息:

{ file1: 
  File {
   domain: null,
   _events: {},
   _eventsCount: 0,
   _maxListeners: undefined,
   size: 62464,
   path: 'myDir/upload_e79d8d551721e2f399afbc39d5d5eaab.doc',
   name: 'somefile.doc',
   type: 'application/msword',
   hash: null,
   lastModifiedDate: Thu May 19 2016 20:22:24 GMT+0530 (IST),
   _writeStream: 
    WriteStream {
      _writableState: [Object],
      writable: true,
      domain: null,
      _events: {},
      _eventsCount: 0,
      _maxListeners: undefined,
      path: 'uploadDir/upload_1e0e9625e27f5c5172eaf5d18172f946.doc',
      fd: null,
      flags: 'w',
      mode: 438,
      start: undefined,
      pos: undefined,
      bytesWritten: 62464,
      closed: true } } }

如果我做 console.log,就像这样:

for (var filename in MYOBJ)  
  console.log(MYOBJ[filename]);

我得到以下信息:

{ size: 62464,
  path: 'myDir/upload_e79d8d551721e2f399afbc39d5d5eaab.doc',
  name: 'somefile.doc',
  type: 'application/msword',
  mtime: '2016-05-19T14:52:24.129Z' }

我的明显问题是:

为什么 "file1" 的其他属性没有显示?可能他们不是对象的"ownProperty"?即便如此,为什么"lastModifiedDate"变成了"mtime?"

让我猜猜……cosnole.log 的实现可能使用 Object.getOwnPropertyDescriptor() 并且可以列出所有不可枚举的值

var o = {}
Object.defineProperty(o, 'nonEnumerableValue', {value: 1})


console.log(o) // {}
console.log(o.nonEnumerableValue) // 1