小编ste*_*ick的帖子

为什么即使构造函数在其原型链中,类的instanceof也会返回false?

在NodeJS应用程序中,我试图检查传递给函数的值是否是特定类的实例,但是我instanceof在模块之间使用以及检查类的相等性时会遇到意外行为.

endpoint.js

import SomeClass from 'utils/class';
import SomeModel from 'models/model';

const model = SomeModel.findOne({id: 'abc'});
const values = {a: 'b'};
const classInstance = new SomeClass({id: 'def'});

classInstance instanceof SomeClass //returns true
Object.getPrototypeOf(classInstance) //returns SomeClass {}

model.update(values, { a: classInstance, b: SomeClass });
Run Code Online (Sandbox Code Playgroud)

当classInstance传递给更新函数时,我看到了意外的行为.

调用Object.getPrototypeOf(a)返回SomeClass,也是如此a.constructor.name.但是,a instanceof SomeClass 返回false.

此外,只检查导入的类和传递给函数的类之间的相等性返回false.

require.resolve('utils/class') 为两个导入返回相同的路径.

车型/ model.js

import SomeClass from 'utils/class';

class Model {
  async update(values, injections) {
    const { a, b } = injections;

    // checking instance …
Run Code Online (Sandbox Code Playgroud)

javascript instanceof node.js

8
推荐指数
1
解决办法
154
查看次数

标签 统计

instanceof ×1

javascript ×1

node.js ×1