jQuery的核心:$即jQuery的别称,$()函数用于将任何对象包裹成jQuery对象,之后允许调用定义在jQuery对象上的任何方法。
即jQuery不仅仅是一个类,也是一个普通的对象,在jQuery本身的属性中还增加了一系列的方法:Ajax、each、工具。
$实现的源码如下:
(function(w){
        //工厂
        function jQuery(selector, context){
            return new jQuery.fn.init(selector, context);
        }
        //给原型提供一个简写方式
        jQuery.fn = jQuery.prototype = {
        };
        //init才是jQuery中真正的构造函数
        var init = jQuery.fn.init = function(selector, context){
        };
        //把构造函数的原型,替换为jQuery工厂的原型
        //这么做的目的是为了实现jQuery的插件机制,让外界可以通过jQuery方便的进行扩展
        init.prototype = jQuery.fn;
        //w->window  u->undefined
        w.jQuery = w.$ = jQuery;
    }(window));- 沙箱模式:用立即执行函数将所有的内容包起来,在里面定义变量属于局部变量不会污染全局,并且把外部的需要的window对象作为参数传递进去
- 有关于代码压缩优化
在代码压缩时,window和undefined都可以压缩为1个字母且确保它们就是window和undefined。外层函数只传了一个参数,因此沙箱执行时,u自然会undefined,把9个字母缩成1个字母,可以看出压缩后的代码减少一些字节数。
- 工厂模式:jQuery函数只是一个工厂,真正的构造函数是jQuery.fn.init即jQuery.prototype.init。所以我们能够实现无new构造jQuery对象。而为什么此时创建的jQuery对象还能使用jQuery原型对象上的方法呢?
- init.prototype = jQuery.fn;即 jQuery.prototype.init.prototype = jQuery.prototype;因而通过$()生成的jQuery对象的this指向jQuery.prototype,所以能正确访问jQuery原型上的属性和方法。
- $就是jQuery对象,$.post(),$.get(),$.ajax()等这些都是jquery这个对象的方法
ps:$.post(),$.get(),$.ajax()的区别:
$.ajax 是 jQuery 底层 AJAX 实现,$.ajax是一种通用的底层封装
$.get 只处理简单的 GET 请求功能以取代复杂 $.ajax,请求成功时可调用回调函数。不支持出错时执行函数,否则必须使用$.ajax。
$.post 只处理 post请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。不支持出错时执行函数,否则必须使用$.ajax。另外由于content-type的设置,它们传递参数的格式会有区别,具体不展开讲了,因为我主要用的ajax还是简单的js对象传参,后期遇到具体问题再讨论~~
axios 发 post 请求的问题 axios是vue建议使用的基于promise的http库,它post请求默认编码是application/json格式,但是一般后台是application/x-www-form-urlencoded格式,所以后台接收会出现问题,这篇文章解释了解决问题的方法。
 
 
                     
            
        













 
                    

 
                 
                    