많은 함수와 함수 호출로 프로그램을 작성했습니다. 모든 함수 호출 직전에 코드를 호출하고 싶습니다. 예를 들어, 함수가 호출 될 때마다 콘솔 로그가 표시됩니다.함수가 호출 될 때마다 실행될 코드
저는 이것을 한 번만 쓰고 싶습니다. 모든 함수 선언을 거치지 마십시오. 이 내용은 CSS pseudo elements:before
및 :after
과 비슷하지만 JavaScript의 함수 호출에 적용됩니다.
많은 함수와 함수 호출로 프로그램을 작성했습니다. 모든 함수 호출 직전에 코드를 호출하고 싶습니다. 예를 들어, 함수가 호출 될 때마다 콘솔 로그가 표시됩니다.함수가 호출 될 때마다 실행될 코드
저는 이것을 한 번만 쓰고 싶습니다. 모든 함수 선언을 거치지 마십시오. 이 내용은 CSS pseudo elements:before
및 :after
과 비슷하지만 JavaScript의 함수 호출에 적용됩니다.
JavaScript는 기본적으로 Aspect-Oriented Programming을 (를) 찾고 있습니다. Javascript AOP libraries을 참조하십시오.
더 많은 질문 : https://stackoverflow.com/questions/tagged/javascript+aop
전 누구도 본 적이 없으므로 불가능하다고 생각합니다.
나는 빠른 Google 검색을 수행했으며 아무 도움도 돌아 오지 않았습니다. 그냥 상속,하지만 난 그것이 도움이되는 방법을 볼 수 없습니다.
bdesham처럼 보입니다.
나는 자동으로 콘솔의 모든 기능에 분출 주입하는 방법을 모르겠어요. 그러나 콘솔에 로깅을 퍼 뜨리는 기능에 대해 명시하고 싶다면 클로저를 사용할 수 있습니다.
function ConsoleLogWrap(obj, funcname, msg) {
var xmsg = msg;
var xfuncname = funcname;
var xobj = obj;
obj[funcname+"$"] = obj[funcname];
obj[funcname] = function() {
try {
console.log(xmsg);
} catch(e) {
}
xobj[xfuncname+"$"](arguments);
};
}
function Addition(x, y) {
return x + y;
}
ConsoleLogWrap(window, "Addition", "Addition was called");
window.Addition(5,5); // this will spew out "Addition was called" and return the result of 5+5.
원래 게시 한 내용 중에는 많은 버그가 있습니다. 위의 작동하지 않습니다! – selbie
Function.prototype
을 확장하여 만드는 모든 기능에 메소드를 추가 할 수 있습니다. 다음이처럼 호출 ...
Function.prototype.makeAsync = function() {
var func = this;
var args = arguments;
setTimeout(function() {
func.call.apply(func, args);
}, 1);
};
: 당신이 당신의 의견에 나타내는 것 같은
는이 같은 기능을 추가 할 수 있습니다, 비동기 기능을 실행할 수 있도록하려면function my_func(a, b, c) {
console.log(this);
console.log(a, b, c);
}
my_func.makeAsync(element, 1, 2, 3);
makeAsync
에 전달하는 첫 번째 인수는 사용자가 호출하는 함수의 값인 this
이됩니다.
이 단지 디버깅 아니면 당신은 몇 가지 더 깊은 목적이 무엇입니까? – hugomg
모든 함수 호출시 1ms를 주입하여 DOM 재 페인트가 원활하게 수행되도록합니다. – Randomblue
자바 스크립트에는 쉽게 할 수있는 휴면 기능이 없습니다. * 모든 함수가 변경 될 필요는 없습니다 (다시 그리는 것만). 그리고 마침내 이것은 너무 해킹 된 것처럼 들립니다. 문제의 왕을 해결할 더 표준적인 방법이 있습니다. – hugomg