gpt4 book ai didi

javascript - 我应该在原型(prototype)中添加或删除该类之前检查该类吗?

转载 作者:行者123 更新时间:2023-12-02 20:32:31 25 4
gpt4 key购买 nike

我有一行 JavaScript 代码,使用原型(prototype),每秒运行几次。这行代码根据某些变量的状态,将确保某些元素具有或不具有类。

我的问题是,我应该盲目地添加或删除类(class)还是应该先检查一下?我应该有这个代码吗:

if (!element.hasClassName("overtime")) {
element.addClassName("overtime");
}
if (element2.hasClassName("overtime")) {
element2.removeClassName("overtime");
}

或者只拥有:

element.addClassName("overtime");
element2.removeClassName("overtime");

我的理由是,添加和删除可能是更昂贵的方法,即使更改发生得非常快,也可能会修改 DOM,导致不稳定或加剧内存泄漏或类似的情况。

最佳答案

使用第二个。

通过检查原型(prototype)代码,您可以看到:

  • addClassName 已检查是否存在
  • hasClassName 和removeClassName 都使用一个正则表达式来进行搜索或替换,因此也没有任何好处

代码:

  hasClassName: function(element, className) {
if (!(element = $(element))) return;
var elementClassName = element.className;
return (elementClassName.length > 0 && (elementClassName == className ||
new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
},

addClassName: function(element, className) {
if (!(element = $(element))) return;
if (!Element.hasClassName(element, className))
element.className += (element.className ? ' ' : '') + className;
return element;
},

removeClassName: function(element, className) {
if (!(element = $(element))) return;
element.className = element.className.replace(
new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
return element;
},

关于javascript - 我应该在原型(prototype)中添加或删除该类之前检查该类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845879/

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