/***对于低于3.4.0的jQuery版本,这将替换jQuery.extend*函数,其中一个来自jQuery 3.4.0,稍作修改(文档化*与较旧的jQuery版本和浏览器兼容。**这为Drupal提供了Object.protype污染漏洞修复*运行较旧jQuery版本的安装,包括附带的版本*具有Drupal核心和https://www.drupal.org/project/jquery_update。**@参见https://github.com/jquery/jquery/pull/4333*/(函数(jQuery){//如果jQuery版本已经>=3.4.0,请不要覆盖jQuery.extend()。var versionParts=jQuery.fn.jQuery.split('.');var majorVersion=parseInt(版本部件[0]);var minorVersion=parseInt(版本部件[1]);var patchVersion=parseInt(versionParts[2]);var isPreReleaseVersion=(patchVersion.toString()!==版本部件[2]);如果((主要版本>3)||(主版本===3&&minorVersion>4)||(主版本===3&&minorVersion===4&&patchVersion>0)||(主版本===3&&minorVersion===4&&patchVersion===0&&!是预发布版本)) {回报;}/***这几乎是从jQuery 3.4.0复制而来的。**只做了两个小改动:*-对isFunction()的调用更改为jQuery.isFunction。*-对Array.isArray()的两个调用更改为jQuery.isArray()。**以上两个更改确保了与所有旧jQuery版本的兼容性*(1.4.4-3.3.1)和较旧的浏览器版本(例如IE8)。*/jQuery.extend=jQuery.fn.extend=函数(){var选项,name,src,copy,copyIsArray,clone,target=参数[0]|{},i=1,length=arguments.length,深度=假;//处理深度复制情况if(目标类型===“布尔”){深=目标;//跳过布尔值和目标目标=参数[i]{};i++;}//处理目标为字符串或其他内容时的大小写(可能在深度复制中)if(目标类型!==“对象”&&!jQuery.isFunction(目标)){目标={};}//如果只传递了一个参数,则扩展jQuery本身如果(i===长度){目标=此;i——;}对于(;i<长度;i++){//仅处理非null/未定义的值if((选项=参数[i])!=null){//延伸基础对象for(选项中的名称){copy=选项[名称];//防止物体原型污染//防止无休止的循环if(名称===“__proto__”||目标===副本){继续;}//如果合并普通对象或数组,则递归if(深度&&copy&&(jQuery.isPlainObject(副本))||(copyIsArray=jQuery.isArray(副本)){src=目标[名称];//确保源值的类型正确if(copyIsArray&&!jQuery.isArray(src)){克隆=[];}else if(!copyIsArray&&!jQuery.isPlainObject(src)){克隆={};}其他{克隆=src;}copyIsArray=false;//从不移动原始对象,克隆它们target[name]=jQuery.extend(深度、克隆、复制);//不要引入未定义的值}else if(复制!==未定义){目标[名称]=副本;}}}}//返回修改的对象返回目标;};})(jQuery);