ES6 프록시를 사용하여 JavaScript의 속성에 대해 noSuchMethod 에뮬레이션
noSuchMethod 기능을 사용하면 다음이 가능합니다. 특정 JavaScript 구현에서 존재하지 않는 메소드에 액세스할 때 사용자 정의 동작을 구현합니다. ES6 프록시를 사용하여 속성에 대해 유사한 기능을 구현할 수 있습니다.
ES6 프록시 사용
프록시 객체는 속성 조회와 같은 기본 작업에 대한 사용자 지정 동작을 제공합니다. 속성 액세스에 트랩을 설정하면 noSuchMethod의 동작을 에뮬레이트할 수 있습니다.
<code class="javascript">function enableNoSuchMethod(obj) { return new Proxy(obj, { get(target, p) { if (p in target) { return target[p]; } else if (typeof target.__noSuchMethod__ == "function") { return function(...args) { return target.__noSuchMethod__.call(target, p, args); }; } } }); }</code>
Usage
예:
<code class="javascript">function Dummy() { this.ownProp1 = "value1"; return enableNoSuchMethod(this); } Dummy.prototype.test = function() { console.log("Test called"); }; Dummy.prototype.__noSuchMethod__ = function(name, args) { console.log(`No such method ${name} called with ${args}`); return; }; var instance = new Dummy(); console.log(instance.ownProp1); // value1 instance.test(); // Test called instance.someName(1, 2); // No such method someName called with [1, 2] instance.xyz(3, 4); // No such method xyz called with [3, 4] instance.doesNotExist("a", "b"); // No such method doesNotExist called with ["a", "b"]</code>
이 예에서는 프록시가 속성 액세스를 가로채고 존재하지 않는 경우 noSuchMethod 구현에 위임하여 명시적으로 정의되지 않은 속성에 대한 사용자 지정 동작을 활성화하는 것을 보여줍니다.
위 내용은 ES6 프록시는 JavaScript의 속성에 대해 noSuchMethod 기능을 에뮬레이트할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!