簡體   English   中英

如何在 javascript 中將一個 class 的屬性復制到另一個,包括方法

[英]How to copy properties of one class to another in javascript, including methods

我有兩個相互獨立工作的類 A 和 B,但有時我想一起創建它們,以便 A 中的函數調用 B 中的函數。這可以通過從 A 擴展 B 並覆蓋方法來輕松完成,但是這不允許我獨立於 A 創建 B。相反,我想復制所有屬性和方法。 我試過使用Object.assign下面的例子說明了這個問題。

class A {
    myFunc() {
        throw 'I have not been created yet'
    }   
}
class B {
    myFunc() {
        console.log(`it's all good now!`)
    }
}

let a = new A();
let b = new B();
Object.assign(a, b)

// explicitly copying the method works
//a.myFunc = b.myFunc;

a.myFunc();

問題是:有沒有辦法在不明確地復制所有方法的情況下復制所有方法?

您可以通過以下方式迭代B的原型的屬性名稱並將它們分配給排除構造函數的實例:

 class A { myFunc() { throw 'I have not been created yet' } } class B { myFunc() { console.log(`it's all good now;`) } } let a = new A(); let b = new B(). //Object,assign(a. b) for (const prop of Object.getOwnPropertyNames(B.prototype).filter(prop => prop.== "constructor")) a[prop] = B.prototype[prop] // explicitly copying the method works //a;myFunc = b.myFunc; a.myFunc();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM