@Bergi가 언급 new.target.prototype
했지만 전혀 호출하지 않고도 액세스 할 수 있음을 증명하는 구체적인 예제를 찾고있었습니다 this
(또는 클라이언트 코드가 생성하는 객체에 대한 new
참조, 아래 참조) super()
.
Talk는 저렴합니다. 코드를 보여주세요. 여기에 예가 있습니다.
class A { // Parent
constructor() {
this.a = 123;
}
parentMethod() {
console.log("parentMethod()");
}
}
class B extends A { // Child
constructor() {
var obj = Object.create(new.target.prototype)
// You can interact with obj, which is effectively your `this` here, before returning
// it to the caller.
return obj;
}
childMethod(obj) {
console.log('childMethod()');
console.log('this === obj ?', this === obj)
console.log('obj instanceof A ?', obj instanceof A);
console.log('obj instanceof B ?', obj instanceof B);
}
}
b = new B()
b.parentMethod()
b.childMethod(b)
다음을 출력합니다.
parentMethod()
childMethod()
this === obj ? true
obj instanceof A ? true
obj instanceof B ? true
당신은 우리가 효과적으로 유형의 객체 생성되는 것을 볼 수 있도록 B
또한 형식의 개체입니다 (하위 클래스) A
(부모 클래스)과 내 childMethod()
아이의 B
우리가 한 this
객체를 가리키는 obj
우리가 B의에서 만들어 constructor
와 Object.create(new.target.prototype)
.
그리고이 모든 것이 전혀 신경 쓰지 않고 super
있습니다.
이것은 JS constructor
에서 클라이언트 코드가 new
.
이것이 누군가를 돕기를 바랍니다.