이번에는 JS 메서드를 구현하기 위해 캐시를 호출하는 단계에 대해 자세히 설명하겠습니다. JS 메서드를 구현하기 위해 캐시를 호출할 때 주의 사항은 무엇인가요? 다음은 실제 사례입니다. 1.
메서드 오버로딩이란
자세한 내용은 왼쪽으로 가세요: 메소드 오버로딩/바이두 백과사전
2.js를 어떻게 구현하나요?
var seven={ dosomething:function(){ switch(arguments.length){ case 0: console.log(arguments.length); //dosomething break; case 1: console.log(arguments.length); //dosomething break; case 2: //dosomething console.log(arguments.length); break; } } }
apply 메소드를 사용하는 곳입니다.
세븐에 대한 addMethod
메소드를 작성해보겠습니다
var seven = { addMethod: function (fname, func) { var old = this[fname]; this[fname] = function () { if (arguments.length == func.length) { return func.apply(this,arguments); } if (typeof old == 'function') { return old.apply(this, arguments); } } } };
수정된 세븐은 위와 같으며, 앞서 작성한 스위치는 다음과 같이 하면 됩니다.addMethod
方法
seven.addMethod('dosomething', function (x) { console.log(arguments.length); //dosomething }); seven.addMethod('dosomething', function (x,y) { console.log(arguments.length); //dosomething }); seven.addMethod('dosomething', function (x,y,z) { console.log(arguments.length); //dosomething });
修改后的seven如上,然后之前写的switch就可以这样搞了:
rrreee咱们要增加方法,只需要调用这个addMethod方法就ok了,是不是觉得简单明了,更加清晰。
那么这段代码的原理呢,其实也很简单,就是缓存旧方法,然后根据参数长度依次apply链式调用,直到找到和当前参数等长的方法~然后进行调用。
func
和 old
rrreee
그래서 이 코드의 원리는 사실 매우 간단합니다. 기존 메소드를 캐시한 후, 현재 매개변수와 동일한 길이의 메소드를 찾을 때까지 매개변수 길이에 따라 순차적으로 체인 호출을 적용한 후 호출하는 것입니다.
func
및 old
는 이 분야에 처음 입문하는 사람들을 혼란스럽게 할 수 있습니다. 실제로 여기서는 JavaScript 언어의 기능이 교묘하게 사용됩니다. . 오래된 것이 저장될 때마다 마지막 방법에 대한 참조가 매번 새로운데, 오래된 오래된 것이 참조를 유지합니다. 폐쇄~.
이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 추천 도서:
위 내용은 JS 메소드 구현을 위해 캐시를 호출하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!