// 利用JS的临时死区「基于typeof检测一个未被声明的变量,结果undefined」
// : 如果是在浏览器或者webview环境下运行JS,则A = window,
// : 如果是在node环境下执行,则A=global或者当前模块
var A = typeof window !== "undefined" ? window : this;
// 回调函数:把一个函数作为实参值,传递给另外一个函数执行,在执行过程中,把传递的函数执行
var B = function (window, noGlobal) {
// 浏览器环境下
// window = window
// noGlobal = undefined
"use strict";
var jQuery = function (selector, context) {
// ...
}
var _jQuery = function (selector, context) {
// ...
}
if (typeof noGlobal === "undefined") {
// 把私有的方法暴露到全局对象上
window.jQuery = window.$ = jQuery
}
};
/**
* JS代码执行的环境
* + 浏览器环境 window -> GO
* + webview window -> GO
* + node golo
*/
(function (global, factory) {
"use strict";
if (typeof module === "object" && typeof module.exports === "object") {
// 当前运行JS的环境是支持commonJS模块规范「node.js/webpack,浏览器默认不支持」
// ...
} else {
// 浏览器或者webview环境
// B(window)
factory(global)
}
})(A, B);
// =================================================================
;
(function () {
function ModalPlugin() { }
// ...
// 支持amd编程思想
// 防止冲突处理
var _M = window.M
ModalPlugin.noConflict = function noConflict() {
if (window.M === ModalPlugin) {
window.M = _M
}
return ModalPlugin
}
// 暴露API:支持浏览器 && CommonJS
if (typeof window !== 'undefined') {
window.M = window.ModalPlugin = ModalPlugin
}
if (typeof module === 'object' && typeof exports !== 'undefined') {
}
})()
// =================================================================
/*
<script src='zepto.min.js'></script>
<script src='jquery.min.js'></script>
window.$ = Zepto
window.$ = jQuery
第一步:在导入jQuery的时候,把现有全局$记录下来
var _$=windwo.$; => _$=Zepto
第二步:如果发现$使用权和别的类库冲突了,则转染使用权
=》 var j = jQuery.noConflict()
如果当前的$是jQuery,则window.$=_$=Zepto
return jQuery; j代表的就是jQuery j()代替$
*/
// =================================================================
/*
<script src='jquery-1.11.3.min.js'></script>
<script src='jquery-3.5.1.min.js'></script>
deep 把上个版本jquery属性也转移了
*/