node中,module.export和export都是模块对外输出的引用,通俗点来说,就是引用模块的接口。默认情况下两者是相等的,注意这里的讲的是默认,刚学习的小白,很容易在无意间对他们相等的关系进行了篡改。比如像以下情况
exports指向的更改首先我们要知道的最重要的一点是:module.exports的初始值是{},也就是初始状态module.export => {};如果说在程序中,你将exports的值进行了重新赋值,module.exports的指向是不会发生改变的,也就还是之前那个{}对象!!这有点类似《js高级》里面提到过的对原型对象的再赋值,实例对象也仍然指向最初的原型。这样说有点绕,笔者建议把《js高级》继承那部分再理解一遍。
接下来我们来分析,这段代码,module.exports和 exports的值分别是什么。
程序分析感到意外吗?export的值一直为1234常数,虽然说exports之前是一个{},但是经过数值的赋值,exports的类型就变成了非引用类型。对其添加属性,对象都是无意义的哟!从上图可以看出,module.exports一直指向的就是原来的exports对象,不管exports对象如何改变,module.exports的指向一直都不变,除非你将它的值再指向新的exports对象。像这样:
更改module.exports指向通过以上分析,读者有没有对module.exports和exports的关系有进一步了解呢,笔者也是前端小白一名,有错误的地方,麻烦读者能不吝赐教,一起共同进步。
网友评论