Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每次输入函数时自动运行调试代码(可能通过更改“函数”原型对象?)_Javascript_Function_Prototype - Fatal编程技术网

Javascript 每次输入函数时自动运行调试代码(可能通过更改“函数”原型对象?)

Javascript 每次输入函数时自动运行调试代码(可能通过更改“函数”原型对象?),javascript,function,prototype,Javascript,Function,Prototype,我正在尝试实现以下功能:

我正在尝试实现以下功能:


<每次我调用一个函数,一个警告窗口,以弹出(在做那个函数应该做什么)告诉我什么函数被调用,最后一些更多的数据(比如谁或什么),这个叫“我”等等,虽然这可以很容易地在C++中完成,但是我似乎找不到“函数”结构(成员/方法)。任何地方都有详细说明。不用说,谷歌对它的攻击毫无益处

虽然我设法在“函数”中添加了一个成员,并且这个成员确实存在于随后创建的任何函数中,但我离预期的功能还很远

这就是我所做的:

Function.prototype.demo= function (){ alert("I'm on every function!")}
function x(){alert("whatever")}
x.demo() // alerts the "I'm on every function!" message
这就是我需要的:

Function.prototype.FIRST_TO_BE_RAN=function(){alert("useful info here about me")}
function x(){alert("whatever")};
x();// first the “useful info here about me” to be displayed, then the “whatever”

我如何才能做到这一点,如果能链接到功能对象手册/文档,我将不胜感激。

因此我没有解决方案,但我认为这是一个高级概念

我将函数原型更改为

函数包装器

所以函数{a,b,c,d…}

现在是包装函数(可作为'Function'调用{Function{a,b,c,d…}和PreFunction{the common pre Function…}访问)

每个函数调用实际上都会遇到函数preCall,函数preCall执行常见的操作,然后重定向到实际的函数调用


无论我们需要哪种语言,控制器模式(如上所述)都是必需的。

在JavaScript中,没有可靠的方法来完成您要做的事情

如果您愿意重写/丑化部分代码,您可以更改以下所有实例:

var z = myFunctionCall(a, b, c);

然后你可以覆盖
Function.prototype.call
,但我还没有在每个浏览器中测试过

根据您的代码库,另一个选项是使用编辑器工具搜索和替换的每个实例

function <name>(<arguments>) <whitespace> { <whitespace>
函数(){


<代码>函数({)“警告”(“输入函数”,而这在C++中是容易做到的)——在C++中你将如何做?我不知道有什么方法,所以可能你允许解决方案做的我不考虑……C++中有多种方法:最基本的,使用类构造函数来显示“在什么”构造事件”,使用指向函数的指针“序列化”"在其他函数之前执行自定义函数/动态函数,创建指针函数的数组样式以实现动态执行,等等,直到最奇特的机器代码地址重写…@write2july:所以你也可以在javascript中使用构造函数。你能解释一下为什么要这样做吗?例如,如果一些覆盖测试?@ WreE2Maung:这些C++解决方案都需要对每个函数的定义或使用进行某种修改。这与您在这里尝试的操作完全不同,这是影响整个程序中的每个函数的一个代码。
function <name>(<arguments>) <whitespace> { <whitespace>
function <name>(<arguments>) <whitespace> { <whitespace> alert("Entering function <name");