通过jQuery源码学习javascript(三)


Posted in Javascript onDecember 27, 2012

疑问

第一篇中有位博友提出了以下的问题,我也不太明白,如果有明白的,能否告知一、二。

通过jQuery源码学习javascript(三)

var str = "test"; 
for(var a in str){ 
console.log(a + ":" + str[ a ]); 
}

输出结果
这是一个字符串对象,在使用for的时候,会出现上面的情况。

通过jQuery源码学习javascript(三)

自调用匿名函数(function(){})(window)
(function(window, undefined){ 
// jquery code 
})(window);

代码解析:

第一个括号:创建一个匿名函数。

第二个括号:立即执行。

传入window变量原因:

使window变量由全局变量变为局部变量,不需要将作用域链回退到顶层作用域,以便更快的访问window。
在参数列表中增加undefined原因:

在自调用匿名函数的作用域内,确保undefined是真的未定义。
这样设计的好处:

创建私有命名空间。函数体内的变量和方法,不会影响全局空间。不会与其他程序的变量发生冲突。

功能扩展extend()

根据一般的设计习惯,可以直接通过点(.)语法实现,或者在prototype对象结构中增加一个属性即可。——jQuery框架是通过extend()函数来实现功能扩展的。

我们也做个类似的方法。——把指定参数对象包含的所有属性复制给cQuery或cQuery.prototype对象。

(function(){ 
var 
_cQuery = window.cQuery, 
cQuery = function(){ 
return new cQuery.fn.init(); 
}; cQuery.fn = cQuery.prototype = { 
init : function () { 
return this; 
} 
}; 
cQuery.fn.init.prototype = cQuery.fn; 
cQuery.extend = cQuery.fn.extend = function( obj ) { 
for (var prop in obj) { 
this[ prop ] = obj[ prop ]; 
} 
return this; 
} 
cQuery.fn.extend({ 
test : function() { 
console.log('测试!'); 
} 
}); 
window.C = window.cQuery = cQuery; 
})(); 
// 调用方式 
C().test();

好处:

1、方便用户快速扩展jQuery框架的功能,不会破坏jQuery框架的原型结构。

2、方便管理。
注意:

通过prototype扩展的对象,我们必须通过实例化函数来调用(如cQuery().test(),而不能使用cQuery.test())

对象url参数化param()

(function(){ 
var 
_cQuery = window.cQuery, 
cQuery = function(){ 
return new cQuery.fn.init(); 
}; cQuery.fn = cQuery.prototype = { 
init : function () { 
return this; 
} 
}; 
cQuery.param = function(obj) { 
var prefix, s = []; 
for ( prefix in obj ) { 
s[ s.length ] = encodeURIComponent( prefix ) + "=" + encodeURIComponent( obj[ prefix ]); 
} 
return s.join( "&" ); 
} 

cQuery.fn.init.prototype = cQuery.fn; 
window.C = window.cQuery = cQuery; 
})(); 
var param = cQuery.param({"name":"chuanshanjia", "age":30}); 
console.log( param );

输出结果

通过jQuery源码学习javascript(三)

对象url参数化:有利于结构化,易于维护。如果在url后面加一坨的参数列表,难道看着不眼晕吗?

总结

暂时写到这里,如果大家有所补充,那最好不过了。——大家多交流互相学习下。

Javascript 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
May 14 Javascript
actionscript与javascript的区别
May 25 Javascript
基于jquery的图片幻灯展示源码
Jul 15 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
JS实现左右无缝轮播图代码
May 01 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
May 17 Javascript
动态Axios的配置步骤详解
Jan 12 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
Dec 20 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 Javascript
JS原型对象通俗"唱法"
Dec 27 #Javascript
通过jQuery源码学习javascript(二)
Dec 27 #Javascript
js 判断一个元素是否在页面中存在
Dec 27 #Javascript
通过jQuery源码学习javascript(一)
Dec 27 #Javascript
Eval and new funciton not the same thing
Dec 27 #Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 #Javascript
JS 添加网页桌面快捷方式的代码详细整理
Dec 27 #Javascript
You might like
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
php计算整个目录大小的方法
2015/06/19 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
简单的php购物车代码
2020/06/05 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
python打开使用的方法
2019/09/30 Python
python logging通过json文件配置的步骤
2020/04/27 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Python 如何对文件目录操作
2020/07/10 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
宿舍打麻将检讨书
2014/01/24 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
3的组成教学反思
2014/04/30 职场文书
小学生差生评语
2014/12/29 职场文书
档案接收函格式
2015/01/30 职场文书
采购员岗位职责范本
2015/04/07 职场文书
检讨书范文大全
2015/05/07 职场文书
python实现过滤敏感词
2021/05/08 Python