• jquery源码解读 (摘自jQuery源码分析系列图书(pdf)) 持续更新


    1。总体架构

    1.1自调用匿名函数

     //自调用匿名函数

    (function(window,undefined){
      //jquery code
    })(window);

    1.这是一个自调用匿名函数。第一个括号内创建一个匿名函数,第二个括号,立即执行
    2。为什么要创建这样一个“自调用匿名函数”呢???
    通过定义一个匿名函数,创建一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是js框架必须支持的功能,jQuery应用,必须要确保jQuery创建的变量不能和导入他的程序所使用的变量冲突
    3.匿名函数从语法上叫函数直接量,javascript语法包括匿名函数的括号,事实上自调用匿名函数有两种写法
    第一种
    (function(){

    })(window);
    第二种
    (function(){

    }(window));
    4.为什么要传入window呢?
    通过传入window变量,使得window由全局变量变成局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window,更重要的是,window作为参数传入,可以压缩代码进行优化
    (function(a,b){
    //window被优化为a
    })(window);
    5.为什么要在参数列表增加undefined呢??
    在自调用匿名函数作用域内,确保undefined是真的未定义,因为undefined能够被重写,赋予新的值
    undefined = "now it's defined";
    alert( undefined );
    6.注意到源码最后的分号了吗?
    分号是可选的,但省略分号,并不是好的编程习惯,为了更好的兼容在每行代码后加上分号并养成习惯

    jQuery() $()
    构造函数就是初始化一个实列对象,对象的prototype属性是继承一个实列对象、构造函数注意事项
    1、默认函数首字母大写
    2、构造函数并没有显示返回任何东西。new操作符会自动创建给定的类型并且返回他们,当调用构造函数时,new会自动创建this对象,类型就是构造函数类型
    3、也可以在构造函数中显示调用return.如果返回值是一个对象,他就会替代新创建的对象实列返回,如果返回值是一个原始类型,他就被忽略,新创建实列会被返回。

    function Aaa(){}
    //一般构造函数
    Aaa.prototype.init=function(){alert('init')};
    Aaa.prototype.css=function(){alert('css')};

    var a1=new Aaa();
    a1.init();//初始化
    a1.css();

    //jquery写法

    function jQuery(){
      return new jQuery.prototype.init();
    }
    jQuery.prototype={
      constructor:jQuery,
      init:function(){/*初始化*/},
      css:function(){console.log('css')}
    }
    jQuery.prototype.init.prototype=jQuery.prototype;
    jQuery().css();
    jQuery()->new jQuery.prototype.init();
    //把jQuery的原型指向自己的init方法(看做构造函数)的原型上

    function jQuery(){
      return new jQuery.prototype.init();
    }
    jQuery.prototype.init = function(){
    };
    jQuery.prototype.css = function(){
    };
    jQuery.prototype.init.prototype = jQuery.prototype;

    jQuery().css();

    日常所遇,随手而记。
  • 相关阅读:
    页面模板
    HTML,CSS,JaveScript
    TCP三次握手
    BLDC无刷直流电机的原理及驱动基础
    调试日志——基于stm32的智能声光报警器(三)
    调试日志——基于stm32的智能声光报警器(二)
    调试日志——基于stm32的智能声光报警器(一)
    Jlink-10 pin 的定义(stm32使用)官方定义
    关于学习新知识的一点想法
    前端笔记-javaScript-3
  • 原文地址:https://www.cnblogs.com/zhihou/p/6957609.html
Copyright © 2020-2023  润新知