【深入理解】export和module.export的区别

2023-05-16

内部原理

exports = module.exports = {}
exports 是module.exports的引用,怎么理解这句话呢?
大概就是 var a = {}; var b = a; a 和 b 之间的区别吧

require

  • 在文件中require实际引入的是module.exports 里面返回的东西

module

  • module 实际上是一个对象 里面有很多属性,包括exports等
  • 为什么可以直接打印module,而不会报错呢?
    • 当每个文件被执行的时候,内部都会执行var module = new Module() 实例被创建

module.exports

  • 给module实例中的exports对象添加的属性或者方法;

exports

  • 直接打印exports 是个空对象,且不会报错
  • 因为内部执行了 var module = new Module(); var exports = module.exports

总结

正确示例:可以看到实例对象module中的exports对象中新增了add 方法和name属性

console.log(module);
module.exports.add = function (x, y) { return x + y };
exports.name = name;
console.log(module);

错误示例1:重新改变module.exports的指向之后,exports.xxx添加属性无效
因为exports指向的还是之前的旧对象,exports.xxx是往之前指向的对象中添加属性,
但是module.exports所指向的是一个新的对象
所以实例对象中的exports对象只有add方法,name属性没有添加进去;

console.log(module);
module.exports = {
  add: function(x,y) { return x + y }
}
exports.name = 'tom';
console.log(module);

错误示例2:重新改变exports的指向之后,exports.xxx添加属性无效
因为require的原理就是引入module.exports里返回的内容,可以用exports添加属性和方法,是由于内部添加了一条exports = module.exports的引用,让exports指向了module.exports,所以更改exports的指向之后,就不会对module.exports中的内容有任何的影响了。

console.log(module);
module.exports.add = function (x, y) { return x + y };
exports = { name: 'tom'};
console.log(module);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【深入理解】export和module.export的区别 的相关文章

  • 导出图像格式的访问图表?

    我在 Access 表单中创建了一个图表 并将其以图像格式导出 这很容易完成 但是当我关闭表单时 问题就出现了 它显示了一条弹出消息 对图表对象的操作失败 OLE 服务器可能未注册 要注册 OLE 服务器 请重新安装它 然后我做了一些改变
  • Ruby:C 类包含模块 M;在 M 中包含模块 N 不会影响 C。什么给出?

    更详细地说 我有一个模块Narf 它为一系列类提供了基本功能 具体来说 我想影响所有继承的类Enumerable So I include Narf in Enumerable Array是一个类 其中包括Enumerable默认情况下 然
  • ruby/rails:扩展或包含其他模块

    我将模块分开 以便它们更易于阅读和搜索 lib features running rb walking rb features rb 他们有 lib features running rb module Features Running e
  • 为什么模块中的公共函数不可访问

    我有一个由几个有用的小实用程序组成的程序集 其中我有一个包含简单公共功能的模块 Module FishTrackerConfigurations Public Function GetValueOfUseProductId As Boole
  • 声纳质量配置文件规则导出及描述

    如何下载声纳质量配置文件及其说明 profiles export 语言 java name xyz profile 为我提供 xml 转储 其中包含每个规则的repositoryKey key priority 元素 我应该怎么做才能获得描
  • 导入 python 模块时如何解决 KeyError?

    我试图从不同的目录级别导入模块 所以我使用了 import os import sys sys path insert 0 os path abspath os path join os path dirname file 但现在我收到这个
  • VBA:新集合 -> 模块不是有效类型

    我尝试使用集合作为函数的一部分 但是在编译时不断收到错误 模块不是有效类型 即使该函数只是定义一个集合 我也会得到相同的结果 Function CountUniqueTags Dim table As Collection Set tabl
  • Rust 中为什么有 mod 关键字?

    看完之后this https doc rust lang org book crates and modules html 我想知道为什么有一个mod关键字和mod rs 我假设目录层次结构也可以描述模块 必须显式声明模块有几个原因 模块可
  • 指定 gfortran 应该在其中查找模块的目录

    我目前基于模块来编译程序 例如主程序foo这取决于模块bar 如下 gfortran c bar f90 gfortran o foo exe foo f90 bar o 当foo f90 and bar f90位于同一目录中 如何指定 g
  • 从 Eclipse 导出后,WAR 文件中缺少一些必要的库 - 为什么?

    我接手了一个大学的项目 其中包含一些 Web 服务 通过将项目导出为 WAR 文件 一些库包含在文件中 例如 Axis2 而另一些则不包含 hibernate JDBC 驱动程序 另外 添加到类路径中的 jar 尚未导出 所有库都位于硬盘驱
  • 类、模块、它们的特征类和方法查找

    我们来开公开课吧Module并向其中添加一个方法 class Module def foo puts phew end end 我可以通过这样做来调用这个方法 Class foo 这是可以理解的 因为类Class is Class 其超类是
  • Excel 在“.xls”中发现不可读的内容。同时导出水晶报表到excel

    我正在将数据从 Crystal 报告导出到 PDF 工作正常 并显示所有记录 但是当我将其导出到 Excel 文件中并成功导出时 以及当我在 Excel 中打开它时给出错误消息 文件错误 数据可能已丢失 当我点击 确定 按钮时 在 Exce
  • 如何使用工厂函数解决 ES6 模块中的循环依赖关系?

    我想在我的里面写这样的东西src core Chessman js file import King from chessmen King class Chessman static factory side quality switch
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • 为现有模块创建 d.ts 文件

    我正在尝试创建一个d ts文件为React 静态容器 https github com reactjs react static container图书馆 NPM 中安装的库如下所示 var React require react var
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • Zend Framework 中的动态默认模块

    有谁知道在 Zend Framework 中动态设置默认模块并且不会遇到命名空间问题的方法 例如 我想要做的是有一个允许加载的模块表 其中一个设置为默认模块 例如 我可能有 admin blog calendar 作为可以加载的模块 如果我
  • 为什么将模块级代码放入函数中然后调用该函数在Python中速度更快?

    在亚历克斯 马尔泰利的回应中使 Python 脚本面向对象 https stackoverflow com questions 1813117 making a python script object oriented 他提到在 Pyth
  • 如何在 erlang 中安装模块?

    我是 Erlang 新手 想知道如何安装第三方模块以在我的 Web 应用程序中使用 您将这些文件放在哪里以及执行什么类型的命令 如果您希望在系统范围内安装第 3 方库 例如 Mochiweb 最好将其设置在 ERL LIBS 环境变量下 我
  • 将图层坐标导出到 Excel 的脚本

    我找到了一个脚本 可以将我的图层坐标从 Photoshop CS5 导出到 XML 我希望这里有人可以帮助我编辑该脚本以将坐标记录到 xls 文件中 另外 如果可以将每个坐标放在单独的行上 那就太好了 下面是我想修改以满足我需要的脚本 Th

随机推荐

  • 轻松理解链表、物联网、uC/OS链表、FREERTOS链表

    先给出链表所用结构体定义 节点结构体定义 struct xLIST ITEM TickType t xItemValue 辅助值 xff0c 用于帮助节点做顺序排列 struct xLIST ITEM pxNext 指向链表下一个节点 st
  • PyQt5--StatusBar

    1 coding utf 8 2 39 39 39 3 Created on Sep 13 2018 4 5 64 author SaShuangYiBing 6 39 39 39 7 import sys 8 from PyQt5 QtW
  • U-BOOT必知必备的一些知识(常用部分)

    1 首先u boot的是干啥的 启动linux系统的 要想启动linux系统 必须初始化跑linux的DDR 一般linux镜像存储在外置存储flash位置 2 u boot从哪里获取 uboot官网有 但是支持少 可以从soc厂商定制版的
  • 以Linux认识的方式写Linux驱动之字符设备驱动

    首先我们需要知道的是Linux内核干了什么我们不关心 xff0c 我们开发驱动程序 xff0c 只关心怎么才能让Linux认识我们的驱动 xff0c 当然 xff0c 对应的驱动也有对应的应用程序 xff0c 否则 xff0c 开发这个驱动
  • 关于linux的filp->private_data解释

    首先给出filp的结构体 xff1a struct file struct file union struct list head fu list 文件对象链表指针linux include linux list h struct rcu
  • 呐,这不就是你要的C++后台开发学习路线吗?

    校招形势 在去年结束的秋季招聘中 xff0c 后台开发或服务器开发的岗位需求一度火热 xff0c 甚至超过了算法岗 不少同学从诸神黄昏的算法岗战场上退下 xff0c 转向更偏向工程能力的后台开发岗 xff0c 从而造成后台开发岗位竞争的大爆
  • 了解这些C++常用库,或许能够帮你找到合适的个人项目!

    缺项目的校招同学 xff0c 或许可以从常用库或框架中寻找能够实现个人项目的题目 文 Amazing 图 Amazing 在求职的时候 xff0c 简历上项目会直接影响能否获得笔 面试机会 但是部分同学在书写简历的时候 xff0c 往往都觉
  • java 打包部署服务器时upd或tcp server接收不到网络调试助手的数据,出现问题的可能性

    这里以upd server端为例子 服务器中的upd接收不到本地网络调试助手发过去的可能大概有以下几种可能 1 网络调试助手中的ip 端口地址没有写好 最好是127 0 0 1 本地IP地址192 168 X X 或者外网地址都试一试 2
  • 9. 对象指针与对象数组

    一 对象指针 声明形式 xff1a 类名 对象指针名 Clock c 8 3 10 Clock ptr ptr 61 amp c 通过指针访问对象成员 xff08 一般类的属性都是封装起来的 xff0c 因此通常是通过指针访问成员函数 xf
  • 使用小觅相机标准入门版运行vins

    文章目录 运行步骤概括详细步骤第一步 xff1a 下载相机驱动并编译第二步 xff1a 下载源码并编译第三步 xff1a 更新源码中的配置文件3 1 获得相机与IMU参数3 2 xff1a 修改源代码的参数文件 第四步 xff1a 运行vi
  • Linux/Centos Mondo 一键部署、镜像恢复,快速部署

    一 简介 Mondo Rescue是一个开源免费的故障恢复和备份工具 xff0c 用户可以轻松地创建系统 xff08 Linux或Windows xff09 克隆或备份的ISO镜像 xff0c 可以将这些镜像存放在CD DVD 磁带 USB
  • 嵌入式实时操作系统uC/os-II(十四)-消息邮箱及其操作

    消息邮箱的定义 把数据缓冲区的指针赋给事件控制块成员 OSEventPtr xff0c 同时使事件控制块的成员 OSEventType 为常数 OS EVENT TYPE MBOX xff0c 则该事件控制块就叫做消息邮箱 消息邮箱的数据结
  • iOS Expected ';' after top level declarator

    项目中编译出现iOS Expected 39 39 after top level declarator 原因 xff1a 未导入UIKit框架 转载于 https www cnblogs com StevenHuSir p 1044602
  • 嵌入式实时操作系统uC/os-II(十四)-消息队列

    消息队列 消息队列由三部分组成 xff1a 事件控制块 消息队列 消息 当事件控制块成员 OSEventType 值为 OS OSEVENT TYPE Q 时 xff0c 该事件控制块代表一个消息队列 消息队列的数据结构如图 6 1所示 从
  • 嵌入式实时操作系统uC/os-II(十六)-信号量集

    信号量定义 uC OS II 提供了可处理多个信号量的信号量集 其实意图如图 7 1 所示 图 7 1 信号量集的示意图 从图中可以看到 xff0c 信号量实质上就是一个多输入 多输出的组合逻辑 其输入为其他任务发出的多个信号 xff0c
  • 基于深度学习的图像识别,实现APP自动打麻将

    互联网改变了我们的生活 xff0c 现在连打麻将都在网上打了 进几年发现身边的很多朋友都在网上玩一款四川麻将APP 平时没事的时候我也玩玩 xff0c 我是一个写了几年程序的码龙 xff0c 突然有一天我有个想法我能不能用我的专业来解放我的
  • PHP常用设计模式

    单例模式 单例模式顾名思义 xff0c 就是只有一个实例 作为对象的创建模式 xff0c 单例模式确保某一个类只有一个实例 xff0c 而且自行实例化并向整个系统提供这个实例 单例模式的特点 xff1a 三私一共 xff1a 1 私有的静态
  • 飞行控制器固件项目-对比介绍(Ardupilot、PX4、LibrePilot、OpenPilot)

    ArduPilot与Pixhawk什么关系 https zhuanlan zhihu com p 109639638 无人机开源项目 8个开源无人机项目 https blog csdn net cuml0912 article detail
  • 各种控制方法在抗干扰方面的区别

    一 由来 自适应控制 AdaptiveControl AC xff1a AC旨在处理由结构参数扰动引起的不良影响 AC的思想是首先在线识别受控系统的模型参数 xff0c 然后根据识别的模型参数调整控制参数以获得良好的性能 AC在处理模型参数
  • 【深入理解】export和module.export的区别

    内部原理 exports 61 module exports 61 exports 是module exports的引用 xff0c 怎么理解这句话呢 xff1f 大概就是 var a 61 var b 61 a a 和 b 之间的区别吧