jq的$有$('选择器')与$.xxx这样的写法,我现在只实现了$()链式调用,但是$.ajax这种如果实现?
看来我写得长大家理解都有问题,这次短点.
1)$是jQuery对象的简写标识符
2) $(),调用了jQuery的构造函数
3)$.ajax调用了jQuery对象的一个函数
例如简单的示例
var mQuery=(function(){
function OBJ(selector){
if(!(this instanceof OBJ)){
return new OBJ(selector);
}
this.selector= selector;
}
OBJ.prototype.play=function(){
console.log('play on '+this. selector);
return this;
};
OBJ.myFunc=function(){
console.log("myFunc");
};
return OBJ;
}());
(function($){
$('myselector').play();
$.myFunc();
}(mQuery));
这样重新封装一次有什么意义呢?jQuery的使用已经非常简单了,如果看jQuery源码都有困难的话,不如直接使用来的方便。
很简单的,首先,jquery的入口函数是不用new操作的,函数名是jquery,一样一来就可以在这个jquery增加继承属于方法了,值得注意的,入口函数不能new操作才行,如果new操作后这些继承就没有用了。
手机打字很累,需要例子我再复制给你
直接用不就可以了吗?移动端就用zeptojs
ajax说到底是一个xmlhttprequest对象在起作用,不过不同浏览器兼容性不好,个人认为自己封装的话,如果做不到像jq那样兼容各大浏览器,那还是使用$.ajax()吧。。。
而你说到这个$.ajax。。。实际上相当于一个这样的构造函数:
function $(select){
return new JQ(select);
}
function JQ(){
....
}
JQ.prototype={
....
ajax:function(....){
....
},
....
}