프록시 함수를 통해 console.log에 첫 번째 클래스 인수로 인수 전달
console.log
지정되지 않은 수의 인수를 취하고 해당 내용을 한 줄에 덤프합니다.
console.log
그 동작을 유지하기 위해 직접 전달 된 인수를 전달하는 함수를 작성할 수있는 방법이 있습니까? 예를 들면 :
function log(){
if(console){
/* code here */
}
}
이것은 다음과 같지 않습니다.
function log(){
if(console){
console.log(arguments);
}
}
arguments
는 배열 이므로 console.log
해당 배열의 내용을 덤프합니다. 또한 다음과 동일하지 않습니다.
function log(){
if(console){
for(i=0;i<arguments.length;console.log(arguments[i]),i++);
}
}
모든 것을 다른 줄로 인쇄하기 때문입니다. 요점은 console.log
의 동작 을 유지 하는 것이지만 프록시 기능을 통해서 log
입니다.
+ ---
앞으로 모든 함수에 적용 할 수있는 솔루션을 찾고있었습니다 (인수 처리를 그대로 유지하는 함수에 대한 프록시 만들기). 그러나 그렇게 할 수 없다면 console.log
구체적인 답변을 수락하겠습니다 .
이렇게해야 ..
function log() {
if(typeof(console) !== 'undefined') {
console.log.apply(console, arguments);
}
}
(그냥 다른 옵션 추가 사용 확산 연산자와 나머지 - 비록 매개 변수를 arguments
확산와 직접 사용될 수 )
function log(...args) {
if(typeof(console) !== 'undefined') {
console.log(...args);
}
}
유사한 방식으로 console.log를 래핑하는 html5boilerplate 코드에서이를 인식하지 못하는 브라우저를 방해하지 않도록하는 좋은 예가 있습니다. 또한 히스토리를 추가하고 console.log 구현의 차이점을 부드럽게합니다.
그것은 Paul Irish에 의해 개발되었고 그는 여기 에 그것에 포스트를 썼습니다 .
아래에 관련 코드를 붙여 넣었습니다. 여기에 프로젝트의 파일 링크가 있습니다. https://github.com/h5bp/html5-boilerplate/blob/master/js/plugins.js
// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
log.history = log.history || []; // store logs to an array for reference
log.history.push(arguments);
if(this.console) {
arguments.callee = arguments.callee.caller;
var newarr = [].slice.call(arguments);
(typeof console.log === 'object' ? log.apply.call(console.log, console, newarr) : console.log.apply(console, newarr));
}
};
// make it safe to use console.log always
(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}}((function(){try {console.log();return window.console;}catch(err){return window.console={};}})());
예.
console.log.apply(null,arguments);
Although, you may need to loop through the arguments object and create a regular array from it, but apart from that that's how you do it.
ReferenceURL : https://stackoverflow.com/questions/7942323/pass-arguments-to-console-log-as-first-class-arguments-via-proxy-function
'IT story' 카테고리의 다른 글
정규식, 여러 줄을 일치시키는 방법? (0) | 2021.01.07 |
---|---|
열거 형에 패키지 전용 생성자가있는 이유는 무엇입니까? (0) | 2021.01.07 |
Android OpenGL 텍스처 압축 (0) | 2021.01.07 |
SAPI 란 무엇이며 언제 사용합니까? (0) | 2021.01.07 |
CSS 재정의 규칙 및 특이성 (0) | 2021.01.07 |