JavaScript의 속성에 대한 noSuchMethod 기능을 구현하는 방법
JavaScript에서 noSuchMethod Rhino 및 SpiderMonkey와 같은 구현의 기능을 사용하면 개발자가 구현되지 않은 메서드에 대한 동적 동작을 구현할 수 있습니다. 이 기능을 사용하면 존재하지 않는 메소드가 호출될 때 프록시 객체가 사용자 정의 메시지를 반환하거나 특정 작업을 수행할 수 있습니다.
표준 JavaScript 언어의 속성에 직접적으로 상응하는 것은 없지만 비슷한 것을 에뮬레이트하는 것은 가능합니다. ECMAScript 6 프록시를 사용하는 기능. ECMAScript 6 릴리스에는 속성 액세스를 가로채고 사용자 정의 동작을 정의할 수 있는 강력한 도구인 프록시가 도입되었습니다.
속성에 대해 __noSuchMethod__와 유사한 기능을 달성하려면 다음 접근 방식을 사용할 수 있습니다.
get: function(target, property) { if (property in target) { // Return the property value if it exists return target[property]; } else if (typeof target.__noSuchMethod__ == "function") { // Call the __noSuchMethod__ method with the property name // as the first argument and any additional arguments as the rest return function(...args) { return target.__noSuchMethod__.call(target, property, args); }; } }
function enableNoSuchMethod(obj) { return new Proxy(obj, getTrapHandler); }
const proxy = enableNoSuchMethod({ __noSuchMethod__: function(name, args) { console.log(`No such property ${name} accessed with ${args}`); } }); console.log(proxy.someProperty); // Logs "No such property someProperty accessed with []"
이 접근 방식을 적용하면 ECMAScript 6 프록시를 사용하여 JavaScript의 속성에 대해 noSuchMethod 동작을 에뮬레이션할 수 있습니다. 이 기술을 사용하면 속성 액세스를 동적으로 처리할 수 있으며 존재하지 않는 속성에 액세스하려고 할 때 사용자 지정 동작을 구현하는 방법을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3