there is no magic. at all. what whatever is assigned to module.exports is 
returned to requiring code. the exports is initally set up to be a shortcut 
reference to module.exports if you assign something to module.exports you 
have to assign the same thing to exports if you want to keep this reference 
intact. so if you want to re-assign this do it this way:

module.exports = exports = myNewGreatExports

so if you do so, everything is ok and in place and you can still use the 
shortcut. You also can just not use the shortcut and use always the longer 
form.

Am Mittwoch, 16. Oktober 2013 08:40:38 UTC+2 schrieb yougen zhuang:
>
> Not exactly. If just setting "exports" would not work, for example, 
> exports = Rect, than in another file, assuming main.js, var Rect = 
> require('Rect'), var rect = new Rect() will fail.
>
> 在 2013年10月15日星期二UTC+8下午8时33分15秒,greelgorke写道:
>>
>> module.exports and exports are referencing the same object. if you do 
>> module.exports = foo, both point to different objects. if you want to 
>> assign to module.exports and keep the shortcut exports correct do this
>>
>> module.exports = exports = foo
>>
>> simple reference handling, there is no magic behind.
>>
>> Am Dienstag, 15. Oktober 2013 12:22:29 UTC+2 schrieb yougen zhuang:
>>>
>>> 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 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