gpt4 book ai didi

javascript - 如何在 JavaScript 中实现细化

转载 作者:行者123 更新时间:2023-11-29 18:32:30 24 4
gpt4 key购买 nike

我正尝试在 JavaScript 中实现(所谓的)改进。请看下面的例子:

<html>
<head>
<title>Function Override (Refinement) example</title>
<script type="text/javascript">

// original function
function oneFunc() {
document.writeln("<p> In original oneFunc() </p>");
}

var prevOneFunc = null;
if (oneFunc) {
prevOneFunc = oneFunc;
}

// redeclared function (should refine/complement the original one)
function oneFunc() {
if (prevOneFunc) {
prevOneFunc(); // should call original oneFunc(), BUT IT ISN'T
}
document.writeln("<p> In refined oneFunc() </p>");
}

oneFunc();

</script>
</head>
<body>
</body>
</html>

我的意图是有两个打印输出:

In original oneFunc()
In refined oneFunc()

但是,似乎因为在执行时 oneFunc 指的是新的/改进的函数,因此输出与预期不同。在调试器中检查我正在进入无限递归:)(是的,明白为什么)。

请解释我缺少哪些信息才能正确实现。

更新: 一些限制:我认为(不确定)我不能修改原始的 oneFunc 声明,它的声明就像上面描述的那样。我也不应该修改改进后的 oneFunc 的声明。

最佳答案

这有效:http://jsfiddle.net/maniator/gxpK8/

当你按照自己的方式去做时,你就是在定义:

prevOneFunc = function oneFunc(){...}

所以您没有分配匿名函数,因此要执行您想要执行的操作,您必须像这样声明 oneFunc:

oneFunc = function() {
document.writeln("<p> In original oneFunc() </p>");
}

然后后面是正确的:

prevOneFunc = function(){...}

关于javascript - 如何在 JavaScript 中实现细化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509606/

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