jQuery面向对象的写法

 

 定义的写法

//构造函数
function test(){
    //construct code
}
//初始化方法
test.prototype.init = function(){
    //init code
};
//扩展方法
test.prototype.expandFunc = function(){
    //expend function code
};

 调用的写法

//定义一个对象实例
var t = new test();
//初始化
t.init();
//调用扩展方法
t.expandFunc();

当我们new了一个新的对象实例test出来后,test内会自动带有一个constructor属性,这个属性指向构造函数本身

alert(test.constructor);

因为js在我们创建了一个新的对象后会自动执行这样一步操作

test.prototype.constructor = test;

 

 

 

jQuery源码的写法

//构造函数
function jQuery(){
    //construct code
    return new jQuery.prototype.init();
}
//初始化方法
jQuery.prototype.init = function(){
    //init code
};
//扩展方法
jQuery.prototype.expandFunc = function(){
    //expend function code
};

这样在构造函数被调用以后就会自动执行init()了。

jQuery().expandFunc();

 但是如果只这样调用的话,init()并没有expandFunc()这个方法,所以我们改成以下调用方法:

jQuery.prototype.init.prototype = jQuery.prototype;
jQuery().expandFunc();

这样就形成了一个引用的传递。

posted @ 2015-12-19 13:55  zcynine  阅读(2620)  评论(0编辑  收藏  举报