使用自制的JavaScript切换类功能,性能下降非常奇怪

时间:2013-05-29 11:48:56

标签: javascript performance

我已经为我正在开发的一个小项目创建了自己的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;
  }
};

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

更新

0 个答案:

没有答案