node.js - instanceof 是否适用于通常导入的类?
问题描述
问题
我正在两个相关项目中导入一个类。似乎在一个项目中创建的类实例的原型链与另一个项目中的类版本不匹配。
具体来说,instanceof
返回 false。
编码
我有三个 npm 包/项目(为简单起见而发明的名称):
classes
(包含Payload
)processors
(包含ProcessPayload
);取决于classes
main
(实际上不是一个包);取决于classes
和processors
该main
项目创建一个Payload
并将其传递给一个ProcessPayload
对象。
需要明确的是:这些项目有三个独立package.json
的,它们之间的任何关联都是通过dependencies
.
主/index.js
import { Payload } from 'classes'
import { PayloadProcessor } from 'processors'
const payload = new Payload()
const processor = new PayloadProcessor()
console.log(payload instanceof Payload) // true
processor.process(payload)
该ProcessPayload
对象导入Payload
并使用它来验证其参数的类型。
处理器/PayloadProcessor.js
import { Payload } from 'classes'
class PayloadProcessor {
process = (obj) => {
console.log(obj instanceof Payload) // false
}
}
export default PayloadProcessor
问题
这里的原型链发生了什么。我计划使用鸭子类型并创建一种isPayload
方法来解决我的问题,但是我的依赖堆栈中真的有两个版本的Payload
浮动吗?在这种情况下,有什么办法可以instanceof
按预期工作吗?
解决方案
推荐阅读
- internet-explorer - 使用 vbScript 的 IE 自动化
- laravel - 如何显示用户名而不是 id。拉拉维尔
- ios - 取消 UIPercentDrivenInteractiveTransition 时如何禁用 UINavigationBar 动画
- javascript - 在 Reducer 的前几次执行中未定义导入的函数
- macos - 如何永久修复“没有 /usr/bin 目录的写权限”
- python - “AUTH_USER_MODEL 指的是尚未安装的模型 '%s'” % settings.AUTH_USER_MODEL django.core.exceptions.ImproperlyConfigured:
- android - 无法让 selenium 和 android 虚拟设备相互交谈
- mysql - 如何在将新列添加到表的迁移中为现有行插入与默认值不同的值
- flutter - 颤振 - Cache_network_image。我用同名的新图像替换了旧图像。但是对app没有影响
- git - 每当我们创建提交时,git 可以在第 N 行打开 vim 编辑器吗?