JS의 함수 정의는 형식적인 매개변수 이름을 지정할 수 있습니다. 우리는 js가 최소한 다양한 수의 매개변수를 사용하여 메소드 오버로딩을 지원할 수 있다고 생각합니다. 그러나 이는 불행히도 js의 모든 매개변수에 불과합니다. 인수가 전달되면 이 매개변수는 함수가 호출될 때 모든 실제 매개변수가 이 데이터 구조에 저장됩니다. 접근 방법. 즉, JS의 모든 함수는 무제한 매개변수를 지원하며, 데이터 유형은 약한 유형이므로 JS 함수 간에는 이름 외에는 실제로 메소드 차이가 없습니까?
항상 JavaScript에서 특수 객체 인수를 사용하여 함수 오버로딩을 시뮬레이션할 수 있는 방법이 있습니다. 오버로딩을 구별하기 위해 전달된 매개변수의 수나 유형을 결정하는 데 사용합니다.
1. 매개변수 개수에 따른 과부하
js는 인수.길이 속성을 사용하여 수신 매개변수의 수를 결정할 수 있습니다.
2.根据参数类型重载
변수 유형을 결정하는 세 가지 방법:
1. typeof 문을 사용하여 변수 유형을 결정합니다. typeof 문은 유형에 해당하는 문자열을 반환합니다.
2.instanceof문을 사용하여 변수 유형을 결정합니다.instanceof문은 true/false를 반환합니다.
3. 생성자 속성을 사용하여 변수 유형을 결정합니다. 이 속성은 변수를 생성하는 데 사용되는 생성자 참조를 반환합니다.
비교표: typeof가 특정 유형을 정확하게 판별할 수 없음을 알 수 있으므로 생성자를 사용하여 판단합니다.
typeof | string | number | object | function | boolean | object | object |
constructor | String | Number | Object | Function | Boolean | Array | User Define |