加载 jQuery 后如何访问存根美元函数

How is the stub dollar function accessed after jQuery is loaded?

本文关键字:访问 存根 美元 函数 jQuery 何访问 加载      更新时间:2023-09-26

就我看到循环逻辑而言,我对它是如何工作的有点困惑:

  1. 定义存根美元函数:

    window.q=[];
    window.$=function(f){
      q.push(f);
    };
    
  2. 在 jQuery 加载后,立即将任何推送到存根上的函数添加到 jquery on load dollar 函数中:

    $.each(q,function(index,f){
      $(f)
    });
    

如何正确访问这两个美元功能? jQuery加载后,它不是已经接管了美元函数吗?

您的存根$函数将其接收的每个函数推送到数组q

当 jQuery 加载时,它会用自己的$替换你的,但它不会覆盖你的q数组。

最终的代码使用 jQuery 的 $.each() 方法来迭代你的q数组,在每个函数上调用 jQuery 的 $ 函数(循环中f(。所以就好像你一开始就使用 jQuery 的$调用$(f)一样。当这样使用时,$$(document).ready()的快捷方式。

这是一种 onready 方法的延迟注册。

它是如何工作的

  1. 我们注册一个存根$方法,该方法将所有 onready 方法转储到全局数组中
  2. 一旦 jquery 被加载$被替换为 jQuery 对象,但全局数组q仍然在加载之前将所有 onready 方法传递给 jquery
  3. 当 jQuery onready 被触发时,我们遍历全局数组q并调用每个注册的函数。

jQuery加载后,它不是已经接管了美元函数吗?

这就是整个想法;在<head>中创建的临时函数为jQuery创建一个只实现jQuery(fn)的存根;任何在此定义和加载jQuery之间使用$(function() { ... })的代码都将保留在window.q中。

加载 jQuery 后,$将被替换,但保留的回调函数列表仍然可用,并将在批处理操作中处理。