在Nodejs中,当我console.log一个req对象时,[Circular]引用了什么?如何确定
|
在Nodejs中,当我console.log一个req对象时,[Circular]是什么意思?
这是一个针对基本nodejs示例的console.log(req)示例。注意request.socket._readWatcher.socket是一个[Circular]。这是否意味着它指的是自己?我该如何取消引用?
{ socket:
{ bufferSize: 0,
fd: 7,
type: \'tcp4\',
allowHalfOpen: true,
_readWatcher:
{ socket: [Circular],
callback: [Function: onReadable] },
destroyed: false,
readable: true,
_writeQueue: [],
_writeQueueEncoding: [],
_writeQueueFD: [],
_writeQueueCallbacks: [],
_writeWatcher:
{ socket: [Circular],
callback: [Function: onWritable] },
writable: true,
_writeImpl: [Function],
_readImpl: [Function],
_shutdownImpl: [Function],
remoteAddress: \'127.0.1.1\',
remotePort: 40407,
server:
{ connections: 1,
allowHalfOpen: true,
watcher: [Object],
_events: [Object],
httpAllowHalfOpen: false,
type: \'tcp4\',
fd: 5 },
ondrain: [Function],
_idleTimeout: 120000,
_idleNext:
{ repeat: 120,
_idleNext: [Circular],
_idlePrev: [Circular],
callback: [Function] },
_idlePrev:
{ repeat: 120,
_idleNext: [Circular],
_idlePrev: [Circular],
callback: [Function] },
_idleStart: Sun, 15 May 2011 01:18:50 GMT,
_events:
{ timeout: [Function],
error: [Function],
close: [Function] },
ondata: [Function],
onend: [Function],
_httpMessage:
{ output: [],
outputEncodings: [],
writable: true,
_last: false,
chunkedEncoding: true,
shouldKeepAlive: true,
useChunkedEncodingByDefault: true,
_hasBody: true,
_trailer: \'\',
finished: false,
socket: [Circular],
connection: [Circular],
_events: [Object],
_header: \'HTTP/1.1 200 OK\\r\\nContent-Type: text/plain\\r\\nConnection: keep-alive\\r\\nTransfer-Encoding: chunked\\r\\n\\r\\n\',
_headerSent: false } },
connection:
{ bufferSize: 0,
fd: 7,
type: \'tcp4\',
allowHalfOpen: true,
_readWatcher:
{ socket: [Circular],
callback: [Function: onReadable] },
destroyed: false,
readable: true,
_writeQueue: [],
_writeQueueEncoding: [],
_writeQueueFD: [],
_writeQueueCallbacks: [],
_writeWatcher:
{ socket: [Circular],
callback: [Function: onWritable] },
writable: true,
_writeImpl: [Function],
_readImpl: [Function],
_shutdownImpl: [Function],
remoteAddress: \'127.0.1.1\',
remotePort: 40407,
server:
{ connections: 1,
allowHalfOpen: true,
watcher: [Object],
_events: [Object],
httpAllowHalfOpen: false,
type: \'tcp4\',
fd: 5 },
ondrain: [Function],
_idleTimeout: 120000,
_idleNext:
{ repeat: 120,
_idleNext: [Circular],
_idlePrev: [Circular],
callback: [Function] },
_idlePrev:
{ repeat: 120,
_idleNext: [Circular],
_idlePrev: [Circular],
callback: [Function] },
_idleStart: Sun, 15 May 2011 01:18:50 GMT,
_events:
{ timeout: [Function],
error: [Function],
close: [Function] },
ondata: [Function],
onend: [Function],
_httpMessage:
{ output: [],
outputEncodings: [],
writable: true,
_last: false,
chunkedEncoding: true,
shouldKeepAlive: true,
useChunkedEncodingByDefault: true,
_hasBody: true,
_trailer: \'\',
finished: false,
socket: [Circular],
connection: [Circular],
_events: [Object],
_header: \'HTTP/1.1 200 OK\\r\\nContent-Type: text/plain\\r\\nConnection: keep-alive\\r\\nTransfer-Encoding: chunked\\r\\n\\r\\n\',
_headerSent: false } },
httpVersion: \'1.1\',
complete: false,
headers:
{ \'user-agent\': \'curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18\',
host: \'uh-uh-uh-I-aint-telling\',
accept: \'*/*\' },
trailers: {},
readable: true,
url: \'/\',
method: \'GET\',
statusCode: null,
client:
{ bufferSize: 0,
fd: 7,
type: \'tcp4\',
allowHalfOpen: true,
_readWatcher:
{ socket: [Circular],
callback: [Function: onReadable] },
destroyed: false,
readable: true,
_writeQueue: [],
_writeQueueEncoding: [],
_writeQueueFD: [],
_writeQueueCallbacks: [],
_writeWatcher:
{ socket: [Circular],
callback: [Function: onWritable] },
writable: true,
_writeImpl: [Function],
_readImpl: [Function],
_shutdownImpl: [Function],
remoteAddress: \'127.0.1.1\',
remotePort: 40407,
server:
{ connections: 1,
allowHalfOpen: true,
watcher: [Object],
_events: [Object],
httpAllowHalfOpen: false,
type: \'tcp4\',
fd: 5 },
ondrain: [Function],
_idleTimeout: 120000,
_idleNext:
{ repeat: 120,
_idleNext: [Circular],
_idlePrev: [Circular],
callback: [Function] },
_idlePrev:
{ repeat: 120,
_idleNext: [Circular],
_idlePrev: [Circular],
callback: [Function] },
_idleStart: Sun, 15 May 2011 01:18:50 GMT,
_events:
{ timeout: [Function],
error: [Function],
close: [Function] },
ondata: [Function],
onend: [Function],
_httpMessage:
{ output: [],
outputEncodings: [],
writable: true,
_last: false,
chunkedEncoding: true,
shouldKeepAlive: true,
useChunkedEncodingByDefault: true,
_hasBody: true,
_trailer: \'\',
finished: false,
socket: [Circular],
connection: [Circular],
_events: [Object],
_header: \'HTTP/1.1 200 OK\\r\\nContent-Type: text/plain\\r\\nConnection: keep-alive\\r\\nTransfer-Encoding: chunked\\r\\n\\r\\n\',
_headerSent: false } },
httpVersionMajor: 1,
httpVersionMinor: 1,
upgrade: false }
更新
既然我显然不像以前那样清楚,我该如何取消引用循环引用的元素?它总是父元素吗?
还要注意的是,昨晚我了解了Utils类和inspect方法。这可能会给我更多有关此方面的信息,而不是我应该合理知道的;)
没有找到相关结果
已邀请:
3 个回复
素汞读
仅表示循环参考。
显示为
它可以显示为
在您的情况下,ѭ5是外部插座。
和
也指向外面的。 更新资料
逝媳蘑贩茄
现在登录:
它永远不会结束,而
调用将产生堆栈溢出,仅此而已。 Node会检测到这些,然后发出循环参考文本。
抽法
对于其他[Circular]参考也是如此。 您不应该取消引用它们,因为这将导致不确定的行为(具有套接字的对象需要该引用才能正常工作)。