2

我已经为我正在处理的一个小项目制作了自己的 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;
  }
};

你有什么想法我在这里俯瞰吗?为什么其他功能快得多?

更新

4

0 回答 0