美文网首页
exports and module.exports

exports and module.exports

作者: HilaryZhu | 来源:发表于2015-12-24 22:28 被阅读0次

    结论:exports是module.exports的引用,初始化为:exports = module.exports = {},即exports和module.exports指向同一个对象。但是require函数执行后只返回module.exports。

    为了验证上面的结论,我们来看下面两个例子:
    eg1:

    greet.js:
    exports.greet = function () {
      console.log("hello node.");
    };
    console.log(exports);
    console.log(module.exports);
    
    app.js:
    var Greet = require('./greet.js');
    Greet.greet();
    

    然后执行node app.js你会得到如下结果:

    { greet: [Function] }
    { greet: [Function] }
    hello node.
    

    因为exports和module.exports指向同一个对象,当通过exports修改这个对象后,module.exports指向的对象也会改变。

    eg2:

    greet.js:
    module.exports = function() {
        console.log("hello node");
    };
    console.log(exports);
    console.log(module.exports);
    
    app.js:
    var greet = require('./greet.js');
    greet();
    

    然后执行node app.js,结果如下:

    {}
    { greet: [Function] }
    hello node.
    

    为什么会得到上面结果呢?greet.js中module.exports被重写,指向了一个函数。这就导致exports和module.exports分别指向不同的对象,而且require函数执行时module.exports被返回。

    相关文章

      网友评论

          本文标题:exports and module.exports

          本文链接:https://www.haomeiwen.com/subject/uowvhttx.html