标签 jquery 下的文章

jQuery源码分析(八): 回调机制基础


起步

上一篇介绍了jq通过func.call()来实现函数的回调。改变上下文环境来做到灵活自如的使用。

理解回调

百科里面是这么解释的:

在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序

例子:

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void sig(int signum)
{
        printf("Received signal number %d!\n", signum);
}

int main(int argc, char *argv[])
{
        signal(SIGUSR1, sig);

        pause();

        return 0;
}


jQuery源码分析(五): 拓展接口extend


起步

jquery通过jQuery prototype的方法添加属性方法。使得开发者开发第三方插件让jq越发壮大。

extend()接口也是一个添加属性方法的入口,这看起来很“多余”。但它的存在是必要的,通过原型的方式注入到jq中的影响范围是全局的,注入一个$.fn.xxx = function(){};影响到所有的jq实例,何况大量开发者的第三方插件之间存在冲突是极有可能的。所以能对单一实例注入$().extend()来对对象增加方法,是不去直接修改prototype。

另外,extend()同样可以注入到全局的jq实例:jQuery.fn.extend({xxx:function()});作用和直接修改原型一样,但就像面向对象思想里面的,如果一个属性设置私有,但又提供get和set方法,那为何不把该属性设为public呢。这是一个更安全更规范的写法,从封装的角度讲extend是一个友好的对外拓展接口。