为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript 检查对象是否是当前类的实例

JavaScript 检查对象是否是当前类的实例

慕斯709654 2023-05-19 16:00:03
我处于这样一种情况,我需要检查一个对象是否是子类的实例,但同时instanceof应该false为父类返回。我已经找到了一种方法,但我无法想到这种方法可能会失败的边缘情况。这是正确的方法吗?这是代码的简化版本:class Employee {    static [Symbol.hasInstance]( instance ) {        return Object.getPrototypeOf( instance ) === this.prototype;    }}class Manager extends Employee {}class AssistantManager extends Manager {}const e1 = new AssistantManager( 'Dean' );console.log( e1 instanceof Employee ) // falseconsole.log( e1 instanceof Manager ) // falseconsole.log( e1 instanceof AssistantManager ) // true
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我发现有人试图完成同样的代码。它建议检查构造函数。可能会有帮助。

他提到要检查构造函数,如下所示:

if (!value || value.constructor !== Foo)
  throw 'InvalidArgumentException: (...)';

或者对象的原型(这更类似于 instanceof 所做的):

if (!value || Object.getPrototypeOf(value) !== Foo.prototype)
  throw 'InvalidArgumentException: (...)';

检查对象是否是类的“直接实例”


查看完整回答
反对 回复 2023-05-19
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信