Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我是否可以使用与现有函数相同的名称创建自己的函数以对其进行自定义?_Javascript - Fatal编程技术网

Javascript 我是否可以使用与现有函数相同的名称创建自己的函数以对其进行自定义?

Javascript 我是否可以使用与现有函数相同的名称创建自己的函数以对其进行自定义?,javascript,Javascript,我有一些console.log命令散布在我的网站上 是否可以用我自己的函数覆盖console.log?我想自定义函数,使其仅在特定变量设置为true时记录 最后,我仍然需要从这个函数调用real console.log 谢谢 Kevin只需创建一个闭包,并将原始的console.log函数存储在局部变量中。 然后重写console.log,并在执行检查后调用原始函数: (function(){ var original = console.log; console.log =

我有一些console.log命令散布在我的网站上

是否可以用我自己的函数覆盖console.log?我想自定义函数,使其仅在特定变量设置为true时记录

最后,我仍然需要从这个函数调用real console.log

谢谢
Kevin

只需创建一个闭包,并将原始的
console.log
函数存储在局部变量中。
然后重写console.log,并在执行检查后调用原始函数:

(function(){
    var original = console.log;

    console.log = function(){
        if ( log ) { // <-- some condition
            original.apply(this, arguments);
        }
    };
})();
(函数(){
var original=console.log;
console.log=函数(){

如果(log){/首先保存旧的
console.log()

var reallog = console.log;
console.log = function(s) {
    if(s == "a") {
        reallog("a");
    }
}
console.log("b");

试试可能会更快。JavaScript只是另一种编程语言。它应该支持重写。@这是一个错误的假设。例如,PHP不允许重写函数。函数重写是一个在某些语言中很难获得的概念,特别是在转换函数名的本机语言中到编译器的某个位置。这是你想要的吗?做得很好。不过,我想知道,
console.log
参数应该是什么…也许是
窗口
对象?这在任何地方都有记录吗?@voithos-
这个
应该是
控制台
对象,因为它被称为它的方法..啊,是的。我真傻。但是,如果是这样的话,那么你真的应该在你的
.apply()中发送
控制台
。这里有一个对您的小提琴的更新,显示
不是console对象,在您的新函数中:@voithos-当然是,.You
alert
控制台
对象,它与调用
alert(console.toString())
相同,它为您提供
[对象]
.Woah,这很奇怪-我是基于Chrome的开发工具。我尝试了
警报(控制台);
,它显示了
[对象控制台]
。我想这是因为本机控制台不同于JavaScript实现(即Firebug Lite)。我的错误。
console.constructor.prototype.log = function(msg) {
    alert(msg);
};