exports与module.exports
//demo1
exports.name='仙女';
exports.age=10;
console.log(exports); //Object {name: "仙女", age: 10}
console.log(module.exports); //Object {name: "仙女", age: 10}
console.log(Object.is(exports,module.exports));//true
//demo2
/*
在没有改变的情况下 默认都是指向空对象的{}
exports:他不会改变原来的地址 还是会指向{} 空对象
module.exports.方法名={} 存储会发生一个改变
module.exports.方法名={}
*/
module.exports={
name:'小仙女',
age:10,
sex:'自己看',
who:()=>{
console.log('这都是个啥啊');
}
}
console.log(exports); //{}
console.log(module.exports);//Object {name: "小仙女", age: 10, sex: "自己看", who: }
console.log(Object.is(exports,module.exports)); //false
//demo3
/*
先exports 再module.exports
exports 只是辅助的工具,他是收集属性和方法,赋值给module.exports,可以改变module.exports;
module.exports不能改变exports的值
都是指向同一个地址 后面的会覆盖前面的
*/
exports.name='张三';
exports.age=10;
module.exports.name='赵四';
module.exports.age=12;
console.log(exports); //Object {name: "赵四", age: 12}
console.log(module.exports); //Object {name: "赵四", age: 12}
console.log(Object.is(exports,module.exports)); //true 地址没有改变
//demo4
/*
先exports暴露
在module.exports暴露
*/
exports.name='狗东西';
exports.age=30;
module.exports={
name:'小狗子',
age:50
}
console.log(exports);//Object {name: "狗东西", age: 30}
console.log(module.exports);//Object {name: "小狗子", age: 50}
console.log(Object.is(exports,module.exports))//false
//demo5
/*
先暴露module.exports 再暴露exports
如果module.exports 自己先定义了 并且 自己有
后面的exports暴露辅助工具,它收集的属性和方法不起作用
*/
module.exports={
name:'小花',
age:10
}
exports.name='小草';
exports.age=20;
console.log(exports);//Object {name: "小草", age: 20}
console.log(module.exports);//Object {name: "小花", age: 10}
console.log(Object.is(exports,module.exports))//false