为什么要将现有的 jQuery class "removeClass" 传递给 IIFE?

Why do you pass existing jQuery class "removeClass" into IIFE?

我刚开始学习JQuery,我从 Codepen 看到的这部分编码让我很困惑


    jQuery.fn.removeClass = function( value ) {
        if ( value && typeof value.test === "function" ) {
            for ( var i = 0, l = this.length; i < l; i++ ) {
                var elem = this[i];
                if ( elem.nodeType === 1 && elem.className ) {
                    var classNames = elem.className.split( /\s+/ );

                    for ( var n = classNames.length; n--; ) {
                        if ( value.test(classNames[n]) ) {
                            classNames.splice(n, 1);
                        }
                    }
                    elem.className = jQuery.trim( classNames.join(" ") );
                }
            }
        } else {
            removeClass.call(this, value);
        }
        return this;
    }

})(jQuery.fn.removeClass);

为什么要传递 "jQuery.fn.removeClass",它在 jQuery 中存在 class?

此函数扩展了默认的 jQuery.removeClass() 方法,因此它接受 RegExp 作为输入:

// case insensitive
$('span').removeClass(/removeme/i);
[class*="me"i] {
  color: red;
}
span {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="removeme">should be black</span>
<span class="RemoveMe Too">should be black</span>
<span class="removeMeAlso">should be black</span>
<span class="notMe">should be red</span>
<script>
(function(removeClass) {
  jQuery.fn.removeClass = function(value) {
  if (value && typeof value.test === "function") {
    for (var i = 0, l = this.length; i < l; i++) {
      var elem = this[i];
      if (elem.nodeType === 1 && elem.className) {
        var classNames = elem.className.split(/\s+/);

        for (var n = classNames.length; n--;) {
          if (value.test(classNames[n])) {
            classNames.splice(n, 1);
          }
        }
        elem.className = jQuery.trim(classNames.join(" "));
      }
    }
  } else {
    removeClass.call(this, value);
  }
  return this;

  }
})(jQuery.fn.removeClass);
</script>