防止javascript函数的双重包装

防止javascript函数的双重包装,javascript,Javascript,我有以下函数,它接收另一个函数签名和一个对象作为参数,并创建一个新函数,调用该函数时,将调用输入函数并将输入对象作为参数添加到其中: 函数wrapFunctioninputFunction,inputObject{ 返回函数{ 常量originalParameters=Array.prototype.slice.callarguments; 原始参数。非移位输入对象; return inputFunction.applythis,原始参数; } } 现在,如果我运行以下javascript: 设

我有以下函数,它接收另一个函数签名和一个对象作为参数,并创建一个新函数,调用该函数时,将调用输入函数并将输入对象作为参数添加到其中:

函数wrapFunctioninputFunction,inputObject{ 返回函数{ 常量originalParameters=Array.prototype.slice.callarguments; 原始参数。非移位输入对象; return inputFunction.applythis,原始参数; } } 现在,如果我运行以下javascript:

设myFunction=function{ console.log'dummy'; } myFunction=wrapFunctionmyFunction,inputObject; myFunction=wrapFunctionmyFunction,inputObject; 最后一个myFunction签名应该如下所示:myFunctioninputObject,inputObject

有没有办法在wrapFunction中找出inputFunction是否是已经使用wrapFunction的函数,以防止对其进行双重包装


在与上面相同的示例中,我的预期结果是,最终的myFunction签名应该如下所示:myFunctioninputObject一个想法是在函数上添加一个标记:

常量标记=新符号; 函数wrapFunctioninputFunction,inputObject{ 如果输入函数[市场]返回输入函数; 常数r=函数{ 常量originalParameters=Array.prototype.slice.callarguments; 原始参数。非移位输入对象; return inputFunction.applythis,原始参数; } r[标记]=真; 返回r; } 最终myFunction签名应如下所示:myFunctioninputObject,inputObject vs.最终myFunction签名应如下所示:myFunctioninputObject?为了防止双重包装,为什么要避免这种情况?因为包装函数只是在开头添加一个参数,所以我认为允许包装两次在开头添加两个参数是完全合乎逻辑的。