[JavaScript] 메소드의 모든 매개변수를 다음 메소드 단계로 자세하게 전달합니다.

제목에서와 같이 JavaScript의 한 메소드의 모든 매개변수를 다음 메소드로 전달하는 방법, 이 단계를 구현하는 방법, 코드가 벽돌을 이동할 때 사용될 수 있으며 메소드를 다시 작성해야 할 경우에 대해 알려 드리겠습니다. 여기.

매개변수 전달

어쩌면 당신은 이렇게 쓸 것입니다. 다음 코드를보십시오.

var _log = console.log;
console.log = function(a,b) {
    
    
	if(b) return _log(a,b);
	return _log(a);
};

그러나 메소드 매개변수가 너무 많으면 다음 코드를 살펴보세요.

var _log = console.log;
console.log = function(a,b,c,d,e,f,g...) {
    
    
	//省略更多....
	if(b && c) return _log(a,b,c);
	if(b) return _log(a,b);
	return _log(a);
};

글을 많이 써야 하는 건지 융통성이 없으면 그렇게 쓰는 게 너무 피곤할 텐데... 깊은 이해가 되네요

인수

아마도 접촉해 본 적이 있다면 arguments이를 활용해 실현 가능한지 살펴보는 것이 좋을 것 같습니다.

  • arguments매개변수 목록 배열입니다. 전달된 매개변수 수를 알 수 있습니다.
  • arguments.length전달된 매개변수의 수를 나타냅니다.

arguments다음 코드를 보면 이렇게 사용하는 것은 좋지 않다는 것을 알 수 있는데 , if()판단을 작성하는 데는 절약되지만 그래도 많이 작성해야 합니다.

var _log = console.log;
console.log = function() {
    
    
	switch(arguments.length){
    
    
		//省略更多....
		case 3:
			return _log(arguments[0],arguments[1],arguments[2]);
		case 2:
			return _log(arguments[0],arguments[1]);
		default:
			return _log(arguments[0]);
	}
};

프록시 방법

Proxy라는 얘기를 듣고, 그 방법이 Proxy가 될 수 있을까?라고 생각했는데, 대답은 '그렇다'였습니다.

apply에이전트 사용법의 예를 보면 코드는 다음과 같습니다.

var _log = console.log;
console.log = function() {
    
    
	return _log.apply(this, arguments);
};

방법을 적절하게 사용하지 않을 apply경우 劫持데이터 보안 문제가 발생할 수 있으며 탐지되기 쉬우므로 사용하지 않는 것이 좋습니다.

매개변수를 직접 전달

한 메소드의 매개변수 목록을 다음 메소드에 전달하거나 매개변수를 직접 전달하면 됩니다.

예제를 보면 ...args함수의 유용성이 반영되어 있으며, 코드는 다음과 같습니다

var _log = console.log;
console.log = function(...args) {
    
    
	return _log(...args);
};

...args스프레드 연산자입니다. 이 사용법은 ECMAScript ES6 이상에서만 지원됩니다.

이거 본적은 있는데 별로 안좋아함...
사진 설명을 추가해주세요

추천

출처blog.csdn.net/zs1028/article/details/132580714