서로 독립적으로 작동하는 두 개의 클래스 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();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다