Jquery这么普及,必有它过人之处,通过开源代码进行学习,是个不错的学习方法啊!
以下是我模拟的方法,我尽量简化方法。
定义对象C(类似于jquery的$方法)——这个也是jquery设计非常巧妙的地方
复制代码 代码如下:
(function(){
var
_cQuery = window.cQuery,
cQuery = function(){
return new cQuery.fn.init();
};
cQuery.fn = cQuery.prototype = {
init : function () {
console.log(this);
return this;
},
test : function () {
console.log('test');
}
};
cQuery.fn.init.prototype = cQuery.fn;
window.C = window.cQuery = cQuery;
})();
C().test();
输出结果
代码分析 1、把cQuery注册到window属性中,当*局变量使用。用C做为简易名称。
window.C = window.cQuery = cQuery;
2、
cQuery.fn.init.prototype = cQuery.fn;
拿图说话(打印当前对象cQuery):
去掉该句截图。
填上此句截图:
难点分析:原型传递
init的原型只是当前的函数。
用cQuery.fn.init.prototype = cQuery.fn;覆盖init构造器的原型对象,从而实现跨域访问。
评估:
这是一招妙棋,new cQuery.fn.init()创建的新对象拥有init构造器的prototype原型对象的方法,通过改变prototype指针的指向,使其指向cQuery类的prototype。——这样创建出来的对象就继承了cQuery.fn原型对象定义的方法。
3、用一个var定义变量,函数。Jquery源码里用了79行定义了一连串的变量(在开头部分)。
each方法
复制代码 代码如下:
(function(){
var
_cQuery = window.cQuery,
cQuery = function(){
return new cQuery.fn.init();
};
cQuery.fn = cQuery.prototype = {
init : function () {
return this;
},
each : function(obj, callback) { // each 方法
var name, length = obj.length;
for (name in obj) {
if (callback.call(obj[name], name, obj[name]) === false) {
break;
}
}
},
isWindow : function(obj) {
return obj != null && obj == obj.window;
}
};
cQuery.fn.init.prototype = cQuery.fn;
window.C = window.cQuery =cQuery;
})();
C().each({ Height : 'height', Width : 'width'}, function(name, type){ console.log(this, name, type); });
输出结果
难点分析:callback.call(obj[name], name, obj[name])
callback是function(name, type){ console.log(this, name,type);}这个方法
第一个obj[name]是"height“或"width"字符串,是callback函数里的this。
name,第二个obj[name]是传给callback的参数。
isWindow()方法
在上面代码的基础上,进行编写:
复制代码 代码如下:
isWindow : function(obj) {
return obj != null && obj == obj.window;
}
调用:
复制代码 代码如下:
console.log(cquery.isWindow(window));
console.log(cquery.isWindow(document));
输出结果
window对象有一个特殊的属性window,等价于 self 属性,它包含了对窗口自身的引用。通过这个属性判断是否是window对象!
总结
我也是刚开始研究。可能有些地方说的不是很清楚,如果有人能给我补充,那再好不过了。
时间不早了,下回再接着研究。
相关推荐:
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
产品经理seo是什么,产品经理seo是什么意思 ,ai政府公文写作 软件
什么是seo手段,seo的具体手段 ,中国ai 企业
SEO主要是为网站引流吗?深入解析SEO的核心价值,AI算算
怎么用AI写出令人惊叹的文章?轻松搞定写作难题!
SEO运维:提升网站排名的核心战略,邢台网站建设优化建站
怎样用AI写文章?快速高效创作新技能!
目前AI软件有哪些?智能新时代的必备工具
ChatGPT页面空白无法登录?如何解决这一困扰?,温州ai字幕生成
seo网站编辑是做什么,seo网站编辑可在家兼职 ,ai慢直播
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
SEO地址优化的秘诀:提升网站排名与流量的关键,临沂如何优化网站关键词
SEO已经成为数字营销的核心,如何利用SEO提升网站流量和转化率,含山网站优化推广
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
ChatGPTWindows版本:让AI助手成为你的工作与生活得力助手,Ai相减变形
ChatGPT怎么突然不能打开了?你需要了解的原因与解决办法,ai写作有什么问题吗怎么解决
从零到一:网站历史的演变与未来趋势,肇庆市国外网站建设平台
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
未来智能:AI智能人工软件引领数字化变革
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
ChatGPT坏了用什么?替代方案,满足你的智能对话需求,星际一的ai
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
AI助手不需要登陆-畅享便捷生活,随时随地高效工作,ai客服 对话
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
SEO做法-提升网站流量与排名的关键秘诀,屏东网站推广招聘
不利于seo是什么,不属于seo对网店推广的作用 ,ai渐变下载
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
AI网页版智能问答,开启智慧沟通新时代,ai梦境档案用不了手柄
seo链接有什么用,seo外链是什么意思 ,one ai写作
GPT-3.5网页版:让你与人工智能零距离接触,ai英语学
AI免费生成文章的软件:轻松创作的秘密武器
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
SEO薪资这些,你也能月入过万!,天水网站建设公司
SEO详解:如何优化你的网站提升排名,获得更多流量,伊春湖南网站优化推广
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
ChatGPT4账号共享-让AI助力你的学习与工作,轻松提升效率,ai巨无霸
seo辅助词选什么,seo助手 ,各车企ai
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
为什么要seo排名,为什么要做seo推广 ,AI写作开启创意新世界
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
GoogleGTP-智能时代的革命性突破,人工智能的新纪元,ai可以降论文ai率吗
文章创作AI:引领智能写作的新时代
ChatGPT破解版电脑:如何获得更强大的AI助手,提升工作与学习效率,ai预设动画
seo跟sem是什么,seo和sem的概念 ,惠威的ai功能
SEO要点:提升网站排名的核心技巧与策略,福田市网站建设推广费用
AI人工智能:改变未来的科技革命
SEO门户:打造高效网站流量的关键利器,创意网站建设要求
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议