鍍金池/ 問(wèn)答/HTML/ 重寫(xiě) console方法

重寫(xiě) console方法

圖片描述

找到這個(gè)符合我的要求 但是沒(méi)看懂到底是怎么做到的

ADD:

不好意思,剛發(fā)現(xiàn)我修改的方法也不能實(shí)現(xiàn)我要的效果
這里說(shuō)一下我的需求
主要是為了實(shí)現(xiàn)
1.自定義的log()函數(shù)既能根據(jù)開(kāi)關(guān)值(true false)判斷是否輸出錯(cuò)誤信息
2.在調(diào)試窗口 自定義的log()函數(shù)能跟蹤到執(zhí)行時(shí)的文件目錄

    如下圖: 1,2的執(zhí)行位置都在selectPoint.js內(nèi)
    希望2的mylog()函數(shù)后面顯示的文件名為 selectPoint.js  而不是 mylog()函數(shù)被定義的文件位置

clipboard.png

查了部分資料,是不是需要手動(dòng)完成 堆棧追蹤部分的操作 emmmm。。。。

回答
編輯回答
嘟尛嘴

mxLibirary.debug開(kāi)關(guān),
比如 在開(kāi)發(fā)環(huán)境下打開(kāi),使用 mylog就可以在控制臺(tái)打印出東西。生產(chǎn)環(huán)境下關(guān)閉,就無(wú)法打印。

函數(shù)內(nèi)部: oriLogFunc 指向 console.log 方法,使用call, 傳入執(zhí)行環(huán)境和 參數(shù)。調(diào)用 console.log 方法

2018年7月3日 15:48
編輯回答
清夢(mèng)

console.trace 這個(gè)輸出的路徑有點(diǎn)太復(fù)雜了 一打開(kāi)幾十行 0.0

2018年1月25日 01:31
編輯回答
柒槿年

const log = console.log 不就好了

2017年1月26日 08:58
編輯回答
舊螢火

改成console.trace就行

2017年12月11日 01:31
編輯回答
鹿惑

這個(gè)功能不全,如果傳入mylog(1,2)結(jié)果就不同了,我寫(xiě)了個(gè):

var show = true;
var log = function(){
    if(show){
        console.log.apply(null,arguments)
    }
}
log("You can see me.");

// 線下設(shè)置show=true,
// 線上改為show=false,即可

// console.log.apply(null,arguments) 
/* apply第一個(gè)參數(shù)為console.log函數(shù)運(yùn)行時(shí)內(nèi)部this指向, 這兒沒(méi)多大影響, 隨便設(shè), 
   主要是第二個(gè)參數(shù), 為傳入console.log的參數(shù), 也就是需要打印在控制臺(tái)的字符
*/

ADD改為這個(gè):

var show = true,
    log = (function(){
        return show ? console.log.bind() : new Function();
    })();
2018年3月6日 13:18