2012-09-27 42 views

回答

1

为了更好地理解内在的的NodeJS模块之一,你应该先阅读其文档。然后,如果需要进一步理解,您将需要探索定义它的源代码。 (大多数内在模块本身都是用JavaScript编写的)。

例如,ServerResponse对象(通常作为“res”传入HTTP请求处理程序)在http.js的第867行中定义,可以在nodejs源代码https://github.com/joyent/node/blob/master/lib/http.js

通过探索源代码,您将能够看到对象支持的方法和属性。

然后,要完全理解一个对象是如何工作的并且发现其方法和属性的全部,则需要遵循其继承树。

ServerResponse从

OutgoingMessage(在相同的文件中定义的),其本身从

流(在stream.js定义)继承继承其进一步继承

events.EventEmitter,当然是

对象

所以,方法和ServerResponse的特性的完整列表是:

ServerResponse 

    statusCode    property 
    _implicitHeader()  method 
    assignSocket()   method 
    detachSocket()   method 
    writeContinue()  method 
    writeHead()   method 
    writeHeader()   method 

    _buffer()    (from OutputMessage) method 
    _finish()    (from OutputMessage) method 
    _flush()    (from OutputMessage) method 
    _renderHeaders()  (from OutputMessage) method 
    _send()    (from OutputMessage) method 
    _storeHeader()   (from OutputMessage) method 
    _writeRaw()   (from OutputMessage) method 
    addTrailers()   (from OutputMessage) method 
    destroy()    (from OutputMessage) method 
    end     (from OutputMessage) method 
    getHeader()   (from OutputMessage) method 
    removeHeader()   (from OutputMessage) method 
    setHeader()   (from OutputMessage) method 
    write()    (from OutputMessage) method 

    pipe()     (from Stream) method 

    addListener()   (from EventEmitter) method 
    emit()     (from EventEmitter) method 
    listeners()   (from EventEmitter) method 
    on()     (from EventEmitter) method 
    once()     (from EventEmitter) method 
    removeAllListeners() (from EventEmitter) method 
    removeListener()  (from EventEmitter) method 
    setMaxListeners()  (from EventEmitter) method 

    arguments    (from Object) property 
    caller     (from Object) property 
    length     (from Object) property 
    name     (from Object) property 
    prototype    (from Object) property 
    super_     (from Object) property 

    __defineGetter__()  (from Object) method 
    __defineSetter__()  (from Object) method 
    __lookupGetter__()  (from Object) method 
    __lookupSetter__()  (from Object) method 
    constructor()   (from Object) method 
    hasOwnProperty()  (from Object) method 
    isPrototypeOf()  (from Object) method 
    propertyIsEnumerable() (from Object) method 
    toLocaleString()  (from Object) method 
    toString()    (from Object) method 
    valueOf()    (from Object) method 
    apply()    (from Object) method 
    bind()     (from Object) method 
    call()     (from Object) method 

通过跟随对象的整个继承树,你建一个深入了解nodejs是如何工作的,并了解它是一个了不起的工具。

+0

谢谢,罗布。我可以同样获得请求支持和方法吗? – vinod

+0

如何获取整个html页面?是否有可能通过任何“res”属性? – VVB

2

最简单的方法来找出其中的JavaScript功能,性能,...一个对象是将对象序列化为一个字符串并将该字符串输出到控制台。

基本上这是一个一行,如:

console.log(JSON.stringify(req)); 

这说明你的一切req对象了。