console
オブジェクトを上書きしようとしています-うまく機能しているようです。使用するには、以下のコードをファイルに保存し、インポートしてプロキシオブジェクトを上書きしてから、通常どおりに使用します。
(これにはbabelトランスパイルが必要でありProxy
、IE 11などのJavaScriptコンストラクターをサポートしていない環境では機能しないことに注意してください)。
import console from './console-shadow.js'
console.log(...)
console.warn(...)
console.error(...)
const overwrites = ['log', 'warn', 'info', 'error']
export default new Proxy(
{},
{
get: (obj, prop) =>
prop in obj
? obj[prop]
: overwrites.includes(prop)
? (...args) => console[prop].call(console, new Date(), ...args)
: console[prop],
}
)
基本的に、コンソールオブジェクトをJavaScriptプロキシオブジェクトで上書きします。あなたが電話するとき.log
、.warn
、など、上書きされたコンソールは、呼び出しているものが関数であるかどうかを確認します。関数である場合は、最初のパラメーターとしてログステートメントに日付を挿入し、その後にすべてのパラメーターを挿入します。
私が思うにconsole
、オブジェクトが実際に多くのことをして、私は完全にそれを理解していません。唯一の切片私はそうconsole.log
、console.info
、console.warn
、console.error
通話。