天天看点

关于module.exports和exports关于module.exports和export

关于module.exports和export

总结:直接使用module.exports.属性名=属性值 的方式,根据后面的会覆盖前面的原则。

使用module.exports={ 属性名:属性值}方式,由于module.exports是新指向了一块内存,exports还是指向原来内存,两者之间发生改变。来看

1.exports 在前,module.exports.属性名=属性值 在后

exports.name = “张三”;

exports.age = 34;

module.exports.name = “李四”;

module.exports.age = 22;

console.log(module.exports)

console.log(Object.is(exports,module.exports))

关于module.exports和exports关于module.exports和export

2.exports 在后,module.exports.属性名=属性值 在后

关于module.exports和exports关于module.exports和export

3.exports在前,module.exports={ 属性名:属性值}在后

关于module.exports和exports关于module.exports和export

4.exports在后,module.exports={ 属性名:属性值}在前 (与3一样)

关于module.exports和exports关于module.exports和export

补充:modules是真实存在的东西,exports只是modules.exports的辅助方法.模块最终返回module.exports给调用者,而不是exports。

s的辅助方法.模块最终返回module.exports给调用者,而不是exports。

exports所做的事情是收集属性,如果module.exports当前没有任何属性的话,exports会把这些属性赋予module.exports。(如果module.exports已经存在一些属性的话,那么exports中所用的东西都会被忽略)上述4种情况讨论

继续阅读