宝哥软件园

通过jQuery源代码学习javascript(一)

编辑:宝哥软件园 来源:互联网 时间:2021-10-06

Jquery这么受欢迎,肯定有它的优势。通过开源代码学习是一种很好的学习方法!下面是我的模拟方法,我尽量简化方法。定义对象c(类似于jquery的$ method) ——,这也是jquery设计非常聪明的地方。复制代码如下:(function(){ var _ c query=window . c query,c query=function(){ return new c query . fn . init();};cquery . fn=cquery . prototype={ init : function(){ console . log(this);归还这个;},test : function(){ console . log(' test ');} };cquery . fn . init . prototype=cquery . fn;窗户。C=window.cQuery=cQuery})();c()。test();产出

代码分析1。在窗口属性中注册cQuery,并将其用作全局变量。用c作为简单的名字。窗户。C=window.cQuery=cQuery2、cquery . fn . init . prototype=cquery . fn;用图片说话(打印当前对象cQuery):去掉这句话的截图。

填写这张截图:

难度分析:原型通过init prototype只是当前函数。

使用c query . fn . init . prototype=c query . fn;重写init构造函数的原型对象以实现跨域访问。评价:这是一个绝妙的举动。new cQuery.fn.init()创建的新对象具有init构造函数的原型对象的方法。通过改变原型指针的指向,指向cQuery类的原型。3354这样创建的对象继承了原型对象cQuery.fn 3定义的方法。用var定义变量和函数。Jquery源代码使用79行来定义一系列变量(在开头)。

每个方法的复制代码如下:(function(){ var _ c query=window . c query,c query=function(){ return new c query . fn . init();};cquery . fn=cquery . prototype={ init : function(){ return this;},每个:函数(obj,callback){//每个方法var name,length=obj.lengthfor(name in obj){ if(callback . call(obj[name],name,obj[name])===false){ break;} } },isWindow :函数(obj) { return obj!=null obj==obj.window} };cquery . fn . init . prototype=cquery . fn;窗户。C=window.cQuery=cQuery})();c()。每个({ Height : 'height ',Width : 'width'}),函数(name,type){ console.log(this,name,type);});产出

难度分析:callback.call (obj [name],name,obj [name]) callback是函数(name,type) {console.log (this,name,type);}此方法的第一个obj[name]是“height”或“width”字符串,在回调函数中就是这样。Name,第二个obj[name]是传递给回调的参数。IsWindow()方法就是基于上面的代码编写的:复制的代码如下: IsWindow : function(obj){ return obj!=null obj==obj.window} call:复制代码如下: console . log(c query . iswindow(window));console . log(c query . iswindow(document));产出

window对象有一个特殊的属性window,它相当于self属性,并包含对窗口本身的引用。用这个属性来判断是否是窗口对象!总结:我才刚刚开始学习。可能有些地方不是很清楚。如果有人能给我加点什么就太好了。时间不早了,我们下次再研究。

更多资讯
游戏推荐
更多+