我已经为我正在开发的一个小项目创建了自己的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;
}
};
你有什么想法我在这里俯瞰吗?为什么其他功能 要快得多?
更新