gpt4 book ai didi

javascript - 是否可以绕过内置 JavaScript 函数

转载 作者:搜寻专家 更新时间:2023-11-01 04:14:30 25 4
gpt4 key购买 nike

我正在尝试使用以下代码查看传递给内置 JavaScript 函数 alert() 的参数。一旦我得到传递给它的参数,现在我想调用真正的(内置)函数,这样代码就不会中断。

built_in_alert = alert;
function alert(text)// Our custom alert function.
{

console.log('Alert function called with param :'+ text);
built_in_alert("Calling with "+text) // try to call the actual built in alert() function.

return 0;

}

alert("hi");

此代码以某种方式进入无限递归。

最佳答案

我同意 Amin Jafari 的观点,即替换内置函数通常不是一个好主意,但在某些情况下它对测试或其他原因很有用。

就是说,您的代码不起作用的原因是您的替换 alert() 函数采用以下形式:

function alert( text ) { ... }

函数声明相同范围内的任何其他代码执行之前被处理。这有时被称为“功能提升”,尽管这有点用词不当。 (该函数实际上并未像术语“提升”所暗示的那样移动。)

在任何情况下,这都会取代内置的 alert() 函数,在您将其保存到 built_in_alert 变量之前

改为这样做:

alert = function( text ) { ... }

因为您现在正在使用普通赋值来替换内置的 alert(),所以替换会在您期望的时间和地点发生。

在这里试试:

built_in_alert = alert;
alert = function( text ) {
console.log( 'Alert function called with param :'+ text );
built_in_alert( 'Calling with ' + text );
}

alert( 'hi' );

关于javascript - 是否可以绕过内置 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37782639/

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