我已经为我正在处理的一个小项目制作了自己的 JavaScript 类操作函数,它们都工作得很好,除了一个。切换类函数。
http://jsperf.com/my-class-functions-and-how-they-perform
截至今天,代码是这样的:
tglClass = function(el, className) {
return !!remClass(el, className) || !!addClass(el, className);
};
而且我认为性能下降是 addClass 和 remClass 在执行任何操作之前都调用 hasClass 的结果:
hasClass = function(el, className) {
return el.classList.contains(className);
};
addClass = function(el, className) {
if (!hasClass(el, className)) {
return el.className += ' ' + className;
} return false;
};
remClass = function(el, className) {
if (hasClass(el, className)) {
return el.className = (' ' + el.className + ' ').replace(' ' + className + ' ', ' ');
} return false;
};
但奇怪的是,当我将函数重写为只执行一次 hasClass 时,性能下降甚至比执行上述操作时还要低。
tglNcClass = function(el, className) {
if (hasClass(el, className)) {
return el.className = (' ' + el.className + ' ').replace(' ' + className + ' ', ' ');
} else {
return el.className += ' ' + className;
}
};
你有什么想法我在这里俯瞰吗?为什么其他功能要快得多?
更新