Node.js에서 PHP __callStatic
매직 메소드와 동일한 동작을 생성하려고 합니다.
프록시
를 사용하여 수행하려고 하는데 이것이 최선의 선택인지 잘 모르겠습니다.
class 테스트 { 생성자() { this.num = 0 } 세트(숫자) { this.num = this.num + num 이것을 돌려줘 } 얻다() { this.num을 반환하세요. } } const TestFacade = 새 프록시({}, { 가져오기: (_, 키) => const 테스트 = 새로운 테스트() 테스트 반환[키] } }) //실행 메소드 체인은 get으로 끝납니다. console.log(TestFacade.set(10).set(20).get()) //예상 결과: 30 //반환 결과: 0 // 새로운 실행 메소드 체인을 시작하고 첫 번째 세트에서 Test 클래스를 다시 인스턴스화합니다. console.log(TestFacade.set(20).set(20).get()) //예상 결과: 40 // 반환 결과: 0
문제는 TestFacade
의 속성에 액세스하려고 할 때마다 get
트랩이 트리거된다는 것입니다. 필요한 동작은 set
메소드가 호출되면 Test
클래스의 this
나중에 사용하기 위한 예입니다!
const testInstance = TestFacade.set(10) // set 메소드는 Proxy대신 `Test`의 `this`를 반환합니다.
불분명한 점이 있으면 알려주시기 바랍니다.
이것이 최선의 선택인지 모르겠습니다. 하지만 저는
get
陷阱中返回一个新的代理来解决了这个问题,该代理使用apply
陷阱将test
클래스 인스턴스를 통해 메소드에 바인딩합니다.