您的位置:首页 > Web前端 > JQuery

静态方法与实例方法共享设计-jquery学习笔记

2015-04-09 16:06 441 查看
jquery里面有两种方法,如下

$(selector).each();//实例方法
$.each();//静态方法


请读者想想,怎么样能够用一个方法实现两个方法?

请读者也做一下下面这个例子思考思考,

当代码是
$.sayHello()
的时候输出Hello

当代码是
$('Jose').sayHello()
的时候输出 Hello, i am Jose

答案如下,据说这段代码是jquery的核心部分,打通了六脉

var $ = function(a){
return new $.prototype.init(a);
}//实例$函数的时候,返回的是init的实例对象,在后面可以看到,init的实例对象是通过init.prototype生成的,而我们把init.prototype = $.prototype了,所以返回的对象就是以$.prototype生成的!
$.sayHello = function(args){
if(args)
console.log("Hello,"+"I am "+args);
else
console.log("Hello");
}//静态方法很容易实现
$.prototype = {
init:function(a){
this.a = a;
//实例初始化a
},
constructor:$,
sayHello:function(){
return $.sayHello(this.a);
//用实例的a作为参数调用静态方法
},
a:null
}//这儿就是对象的原型了,尽管返回的是init的实例对象,也是通过这个原型产生的
$.prototype.init.prototype = $.prototype;

$.sayHello();
$('Jose').sayHello();


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐