亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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個贊

我發現有人試圖完成同樣的代碼。它建議檢查構造函數??赡軙袔椭?/p>

他提到要檢查構造函數,如下所示:

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

或者對象的原型(這更類似于 instanceof 所做的):

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

檢查對象是否是類的“直接實例”


查看完整回答
反對 回復 2023-05-19
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號