我有一種情況,我需要檢查構造函數(X)是否在其原型鏈(或Y本身)中有另一個構造函數(Y)。檢查構造函數是否在ES6中繼承另一個構造函數
最快的方法可能是(new X()) instanceof Y
。在這種情況下,這不是一個選項,因爲如果沒有有效的參數,實例化的構造函數可能會拋出異常。
下一個方法我已經考慮是這樣的:
const doesInherit = (A, B) => {
while (A) {
if (A === B) return true;
A = Object.getPrototypeOf(A);
}
return false;
}
這一工程,但我不能動搖我錯過了一些更簡單的方法來檢查這個意識。有一個嗎?
'Object.getPrototypeOf(A)instanceof B'應該可以工作,我想。 –
這就是我上面使用的(但是==),它確實有效(儘管它需要循環,因爲繼承並不總是直接的)。或者我誤解了? – Semicolon
不,我的觀點是使用Object.getPrototypeOf(A)instanceof B'而不是循環。你正在做一些完全不同的事情:P –