gpt4 book ai didi

javascript - 如何在javascript中扩展一个方法?

转载 作者:行者123 更新时间:2023-11-29 15:02:32 26 4
gpt4 key购买 nike

我想为一个方法添加额外的功能,例如:

console.log()

所以保留了原始的“日志”功能,我也可以让它做一些新的事情。这可能吗?我已经阅读了一些关于使用原型(prototype)的内容,但还没有完全掌握。

非常感谢,

最佳答案

这很容易。如果您希望新的 log 方法代替旧的 log 方法,只需执行以下操作即可:

console._log = console.log; // just backing up old log method
console.log = function(){
console._log(arguments);
alert("I'm doing something else here");
}
console.log(console);

更新:

所有提出的解决方案,包括我的,都没有像@TomBates 所说的那样完美地重现日志行为。输出不同,因为参数被包装在一个对象中而不是单独传递。我能找到重现旧日志行为的唯一方法 + 扩展功能是这样做的:

    console.log(window, this, console); // old log in action

console._log = console.log; // just backing up old log method
console.log = function(){
var args_string = '';
for(i in arguments){
if(arguments.hasOwnProperty(i)){
args_string += 'arguments['+ i + ']';
if(i != arguments.length - 1){
args_string += ',';
}
}
}
var expression = 'console._log(' + args_string + ');';
eval(expression);

alert("I'm doing something else here");
// your dazzling method extension here
}

console.log(window, this, console); //new log in action

不是那么优雅,但可以按预期工作。旧日志和新日志的输出现在相同。

关于javascript - 如何在javascript中扩展一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com