JQ源码分析

一开始我写JQ源码其实还是蛮期待的。但是自己水平真的有限,实在没法看懂JQ源码的真面目,最近,看到了Aaron的博客,和慕课网上的源码分析,当然秒味课堂的也不错,Aaron的博客链接我会放在下面,我也是看了他的博客,才萌生了写JQ源码的激情,以下内容也是看了他的博客的一些感受感想,当然大家可以直接看Aaron大神的博客,- -||毕竟写的没人家大神的好,我这里可能是对一些JS基础不算好的,解释一下基础问题,主要还是给自己留一个笔记!!把当时看Aaron博客遇到不懂的记下来

Aaron 的博客园 http://www.cnblogs.com/aaronjs/p/3279314.html

jQuery的无new构建
首先他说的第一个,可以像JS的工厂模式一样来创建一个返回对象,工厂模式是一种用函数封装,在内部创建对象
并且给对象赋值方法和属性,最后返回对象的一种模式

function creatFn(name ,age){
    var o=new Object();
    o.name=name;
    o.age=age;
    o.sayAge(){
        alert(this.age);
    }
    return o;
};//这是最基本的工厂模式。this指向内部实例

在这里面还提到了原型模式,给大家解释一下原型模式,原型模式的有点在于共享属性,但缺点也是共享属性,可能是成也共享败也共享,一般都是构造和原型一起使用比较方便,先说一下原型,给大家举个例子

function People(){
}
People.prototype={
    constructor:People,//建议加上这个属性,可以识别是谁的原型
    name:"xiaofengfeng".
    age:19;
    job:"student"
}
var people1=new People()
var people2=new People()
alert(people1.name)//xiaofengfeng
alert(people2.name)//xiaofengfeng
//属性都是共享的,所以都一样,但需要创建个人信息的时候就无法使用这种模式,毕竟每个人都不一样

下面梳理一下原型之间的关系,主要是原型与实例与构造函数这三者之间的关系看下图,这是我从javascript高级程序设计上找到的一张图

可以看到,原型和构造函数之间没有之间关系,只和原型之间有关系
原文中想要分离this,避免交互混淆,可以用new,new方法之后this使用新创建的对象的属性,

做到既能隔离作用域还能使用jQuery原型对象的作用域呢,还能在返回实例中访问jQuery的原型对象?
通过原型传递解决问题,把jQuery的原型传递给jQuery.prototype.init.prototype
解释一下就是init原型方法中的this指向实例,这里有把实例的原型给了实例,这样就连到了一起,那个aQuery实例就就可以访问其中的属性和方法


至于链式调用我前面有一篇写连缀的详细写了其中的缘由,就不细说了
至于插件接口,大神Aaron博客讲的很详细了,就不多说了~~~。发现这篇好像并没有说太多

你可能感兴趣的:(jquery)