[英]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.