I still have a question, since module and module.exports both are object, 
modify exports will reflect in module too. But just setting exports will 
not work. For my example,
exports = Rect, in the main.js, can't invoke any function on Rect

// main.js
var rect = require('Rect');

在 2013年10月15日星期二UTC+8下午7时53分10秒,mks写道:
>
> Not that nice. Mostly wrong.
> What happens is something like:
>
> var module = { exports: {}} void function ( module, exports ){
> module.exports.name = 18 // assignment of the "name" property of the 
> "exports" object. 
> exports.answer = 42 // assignment of the "answer" property of the 
> "exports" local variable, that reference the "exports" property of the 
> "module" object. 
> module.exports = 23 // reassignment of the "export" property of the 
> "module" object.
> exports = 100 // just a local variable. }( module, module.exports )
>
> The rest is just basic understanding of how javascript handles references.
>
> On Tuesday, October 15, 2013 12:31:10 PM UTC+2, node-code wrote:
>>
>> Nice write-up here... 
>> http://www.hacksparrow.com/node-js-exports-vs-module-exports.html
>>
>>
>> On Tue, Oct 15, 2013 at 3:52 PM, yougen zhuang <blu...@gmail.com> wrote:
>>
>>> Before assign value to exports, module.exports === exports, but after 
>>> assign value, they're not equal.  In my view, they're point to the same 
>>> reference. 
>>> BTW, if I modify to module.exports.Rect = Rect, then module.exports === 
>>> exports
>>>
>>> function Rect(w,h) {
>>>     this.w = w;
>>>     this.h = h;
>>> };
>>>
>>> Rect.prototype.area = function(){
>>>     return this.w*this.h;
>>> };
>>>
>>> console.log(module.exports === exports);//true
>>> module.exports = Rect;
>>> console.log(module.exports);
>>> console.log(exports);
>>> console.log(module.exports === exports);//false
>>>
>>>
>>>  -- 
>>> -- 
>>> Job Board: http://jobs.nodejs.org/
>>> Posting guidelines: 
>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>>> You received this message because you are subscribed to the Google
>>> Groups "nodejs" group.
>>> To post to this group, send email to nod...@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> nodejs+un...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>>  
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "nodejs" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to nodejs+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to