2016-05-19 1 views
0

Я использую огромный пакет Node от felixge. Это скорее вопрос, связанный с Javascript, чем один конкретный, чтобы грозный, или, как я полагаю.Свойства объекта Javascript (в узле) не регистрируются или регистрируются другим именем

Если я делаю console.log на MYOBJ, я получаю следующее:

{ 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» не отображаются? Может быть, они не являются «собственными свойствами» объекта? Тем не менее, почему «lastModifiedDate» становится «mtime?»?

+0

Какой версию NodeJS вы используете? –

+0

@ Krzysztof Safjanowski. Версия узла - v4.4.4 – Sam

+0

Было бы неплохо, если бы кто-то дал голосование, давая некоторое обоснование, поэтому я знаю, что неясно, почему это не полезно и какие еще исследования я должен был сделать. – Sam

ответ

1

Дай угадаю ... наверное реализация для cosnole.log использует Object.getOwnPropertyDescriptor() и может перечислить все несчетного значение

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


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

Я тоже так думал, как вы можете видеть в заключительном заявлении в моем вопросе (язык изменен позже, слегка). Но я думал, что для этой цели существует метод hasOwnProperty, но тогда console.log может использовать это ... вот что вы говорите? Имеет смысл. Но как насчет изменения имени свойства ... «LastmodifiedDate» становится «mtime»? – Sam

+0

Оба console.log находятся в узле. Но ссылка на ссылку ОЧЕНЬ полезна. Я приму ваш ответ, если ничего другого не произойдет только из-за предоставленной ссылки. Очень информативно. – Sam

Смежные вопросы