首页 > 解决方案 > instanceof 是否适用于通常导入的类?

问题描述

问题

我正在两个相关项目中导入一个类。似乎在一个项目中创建的类实例的原型链与另一个项目中的类版本不匹配。

具体来说,instanceof返回 false。

编码

我有三个 npm 包/项目(为简单起见而发明的名称):

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按预期工作吗?

标签: node.js

解决方案


推荐阅读