gpt4 book ai didi

javascript - 您可以在运行时更改哪些 JavaScript 代码?

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

引自维基百科:

JavaScript, allow programs to create new code at run-time and execute it using an eval function, but do not allow existing code to be mutated.

这是否包括事件处理程序属性和 href 中的 JS 代码? s 与 javascript:字首?您能否在运行时使用 JS 代码更改这些属性?

我可以创建一个新的 <script> 吗?运行时的元素?如果我在那里定义了一个新版本的函数,会发生什么?浏览器会更喜欢我的新功能而不是旧功能吗?

如果我不能更改事件处理程序属性,我可以添加一个优先于旧事件处理程序属性的新事件处理程序属性吗? W.g.一个onmouseover旧的在哪里onclick ?并稍微更改调用中的部分?

最佳答案

您可以更改事件处理程序属性。那是 DOM 的一部分,而不是 Javascript。所以如果你这样做:

document.getElementById("someButton").onclick = someFunction;

这将改变您点击按钮时发生的情况。

你也可以重新定义函数,这样如果函数被它的名字调用,那么新定义的函数将被执行。

但是如果你传递一个函数引用,重新定义对任何使用该引用的东西都没有影响。

举个例子,如果你这样做:

<button type="button" onclick="myFun()">Click Me</button>

如果您重新定义 myFun,点击将使用新定义。

如果你这样做:

<button type="button" id="myButton">Click Me</button>
<script>
document.getElementById("myButton").addEventListener("click", myFun);
</script>

重新定义该函数不会影响该按钮。在您调用 addEventListener() 时,评估 myFun 变量以获取函数对象,重新定义该函数不会对该对象执行任何操作。

您可以将 JS 更改为:

document.etElementById("myButton").addEventListener("click", function() {
myFun();
});

然后每次调用匿名函数时都会查找函数定义。

关于javascript - 您可以在运行时更改哪些 JavaScript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46717334/

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