【问题标题】:How can I prevent the "console.log()" function from being overwritten?如何防止“console.log()”函数被覆盖?
【发布时间】:2020-09-16 01:48:09
【问题描述】:

我需要一种方法来防止 console.log() 被更改/覆盖(例如:console.log = function(){ return "Hi" }。起初,我尝试了 Object.freeze(console.log) 但这没有任何作用。

【问题讨论】:

    标签: javascript html function object


    【解决方案1】:

    您可以使用Object.defineProperty 使属性不可写和不可配置:

    Object.defineProperty(console, 'log', { value: console.log, writable: false, configurable: false });
    
    // Below won't work now, and will throw in strict mode:
    console.log = () => null;
    
    console.log('foobar');

    您可能还希望将window.console 设为不可覆盖:

    Object.defineProperty(console, 'log', { value: console.log, writable: false, configurable: false });
    Object.defineProperty(window, 'console', { value: console, writable: false, configurable: false });
    
    // Below won't work now, and will throw in strict mode:
    console.log = () => null;
    // Below won't work either:
    window.console = { dir: () => null };
    
    console.log('foobar');
    console.log('barbaz');

    【讨论】:

      【解决方案2】:

      您可以冻结对象控制台而不是属性。 Object.freeze(console)

      【讨论】:

        猜你喜欢
        • 2022-11-18
        • 2017-12-19
        • 2021-02-08
        • 2020-07-23
        • 1970-01-01
        • 2018-06-27
        • 2017-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多