当前位置: 首页 > 面试题库 >

自动将console.log添加到每个功能

锺威
2023-03-14
问题内容

通过在某个地方注册全局钩子(即,无需修改实际函数本身)或通过其他方式,是否有任何方法可以使任何函数输出console.log语句?


问题答案:

这是用您选择的函数扩展全局名称空间中所有函数的方法:

function augment(withFn) {
    var name, fn;
    for (name in window) {
        fn = window[name];
        if (typeof fn === 'function') {
            window[name] = (function(name, fn) {
                var args = arguments;
                return function() {
                    withFn.apply(this, args);
                    return fn.apply(this, arguments);

                }
            })(name, fn);
        }
    }
}

augment(function(name, fn) {
    console.log("calling " + name);
});

不利的一面是,调用后创建的任何函数augment都不会具有其他行为。



 类似资料:
  • 问题内容: 每当我对应用程序中的其余控制器发出请求以允许跨源资源共享时,我想将此标头添加到对客户端的每个响应中,目前我正在手动添加每个这样的方法的标头 它的工作,但非常令人沮丧。我在Spring文档中找到了webContentInterceptor,它允许我们修改每个响应的标头 但是当我使用它时,它会引发错误,即找不到名称为Access-Control-Allow-Origin的属性,因此还有其他

  • 我有一个遵循特定模式的整数列表,它很复杂,但例如: 我想用9个副本来扩展列表,但添加一个常量值,每次线性扩展。例如,如果 那么第二个扩展将导致: 所以我想我需要一个循环,循环通过并通过

  • 这里的 Spring 文档 http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/repositories.html#repositories.custom-implementations 提供了将自定义功能添加到所有存储库或单个存储库的示例,而不是同时添加到两者。 假设我想向所有存储库添加一些自定义函数(使用

  • 我有这样的布局: 在开始时,视图是一个半透明视图,它位于布局中所有内容的顶部。当我按下按钮时,我想将FrameLayout放在视图的顶部。我尝试了方法和,之后我调用了,但它们对我都不起作用。我觉得跟海拔属性有关系。 如有任何帮助,我们将不胜感激。谢谢你!

  • 问题内容: 我想自动将键添加到Python字典(如果还不存在)。例如, 如果密钥不存在,如何自动创建密钥? 问题答案: 使用:

  • 对于我的JMeter测试,我希望测试中的所有线程都使用一个共享会话id。在开始测试作业之前,会话id是已知的。如何为JMeter测试指定特定的JSessionId? 我尝试过在 HTTP Cookie 管理器(在用户定义的 Cookie 下)、HTTP 请求默认值(在请求发送参数下)中附加一个 JSessionId 参数,并且我尝试从录制控制器下的“预处理器”选项卡添加“HTTP URL 重写修饰