> 웹 프론트엔드 > JS 튜토리얼 > JavaScript_javascript 팁에 오버로드된 함수에 대한 도우미 메서드 추가

JavaScript_javascript 팁에 오버로드된 함수에 대한 도우미 메서드 추가

WBOY
풀어 주다: 2016-05-16 18:23:57
원래의
1033명이 탐색했습니다.

JavaScript에서 오버로드된 함수는 일반적으로 인수를 판단하여 작동합니다.
예:

코드 복사 코드는 다음과 같습니다.

var afunc = function() {
args = 인수;
if(args.length == 1) {
console.log(1)
}else if(args.length == 2) 🎜>console.log(2)
}else if (args.length == 3) {
console.log(3)
}
}

오버로드가 많을 때 if-else 판단이 얼마나 필요한지 짐작할 수 있습니다(실제로 오버로드 횟수가 너무 많으면 안 됩니다).
js 함수를 오버로드하려면 코드의 양이 분명 많아질 것입니다. 그렇다면 코드를 더 명확하게 만들고 동일한 코드 작성을 줄일 수 있는 방법을 찾을 수 있을까요?
이것이 제가 기사와 관련 코드를 작성한 이유입니다.
코드를 먼저 입력하는 것이 일반적입니다.

코드 복사 코드는 다음과 같습니다.
/**KOverLoad
오버로드된 함수를 생성하기 위한 도우미 메서드입니다.
사실 이 방법은 매개변수가 다를 때 오버로드된 메서드를 분류하는 데 도움이 됩니다.
그래도 매개변수 유형을 판단하고 오버로드하고 싶다면 제공된 방법으로 직접 구현해 보세요.
@작성자 ake 2010-05-02
@weblog http://www.cnblogs.com/akecn
*/
var KOverLoad = function(scope) {
this.scope =scope || window; //기본적으로 이 개체에 메서드를 추가합니다. 동시에 추가된 메소드의 this는 객체를 가리킨다.
this.list = {}; //오버로드된 함수를 저장하는 장소입니다.
return this;
};
KOverLoad.prototype = {
//오버로드된 메서드를 추가합니다.
//@param arg 메소드가 오버로드되었습니다.
add:function(arg) {
if(typeof arg == "function") {
this.list[arg.length] = arg; //매개변수 개수로 식별되는 스토리지 오버로드 메서드. 당연히 오버로드된 메서드의 매개변수 개수가
}
return this;
},
//오버로드된 함수를 모두 추가한 후 이 메서드를 호출하여 오버로드된 함수를 만듭니다.
//@param fc 오버로드된 함수의 메서드 이름입니다.
load:function(fc) {
var self = this, args, len;
this.scope[fc] = function() { //지정된 범위의 지정된 메소드를 오버로드된 함수로 설정합니다. .
args = Array.prototype.slice.call(arguments, 0); //매개변수를 배열로 변환합니다.
len = args.length;
if(self.list[len]) { //매개변수 개수에 따라 해당 오버로드된 메서드를 호출합니다.
self.list[len].apply(self.scope, args); //여기서 범위와 매개변수를 지정합니다.
}else{
throw new Error("정의되지 않은 오버로드 유형");
}
}
}
}

사용 방법 is me 내 생각에 더 명확한 방법은 다음과 같습니다.
//선택적 작업 개체입니다.

코드 복사 코드는 다음과 같습니다.
var s =function(){}
s .prototype = {
init:function() {
console.log();
}
}

//생성자의 매개변수는 Object 유형이거나 다른 합법적인 유형이어야 합니다. 지정하지 않으면 window 객체에 등록되고 범위도 window가 됩니다. 사실 어딘가에 오버로드된 메서드를 추가하기만 하면 됩니다.

코드 복사 코드는 다음과 같습니다.
new KOverLoad(s.prototype).add (function( a) {
console.log("one",a,this)
})
 .add(function(a,b) {
console.log("two", a,b ,this)
})
 .add(function(a,b,c) {
console.log("3",a,b,c,this)
})
.add(function(a,b,c,d) {
console.log("four",a,b,c,d,this)
})
 .load(" func") ; //여기서 매개 변수는 생성할 오버로드된 함수의 메서드 이름입니다.

위 작업을 완료한 후 s.func는 오버로드된 함수입니다.
오버로드된 함수를 다음과 같이 호출할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
var t = new s();
t.func();//오류 예외를 발생시킵니다. 0개의 매개변수로 지정된 함수가 없기 때문에
t.func("o");//one o Object {}
t.func(1,2);//two 1 2 Object {}

간단한 코드일 뿐입니다. 제안이나 의견이 있으시면 메시지를 남겨주세요.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿