【发布时间】:2020-09-16 01:48:09
【问题描述】:
我需要一种方法来防止 console.log() 被更改/覆盖(例如:console.log = function(){ return "Hi" }。起初,我尝试了 Object.freeze(console.log) 但这没有任何作用。
【问题讨论】:
标签: javascript html function object
我需要一种方法来防止 console.log() 被更改/覆盖(例如:console.log = function(){ return "Hi" }。起初,我尝试了 Object.freeze(console.log) 但这没有任何作用。
【问题讨论】:
标签: javascript html function object
您可以使用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');
【讨论】:
您可以冻结对象控制台而不是属性。 Object.freeze(console)
【讨论】: