最近几天学习了很多关于JavaScript和jQuery的文章,稍作梳理后,总结如下。

  1、jQuery入门系列

  环境搭建

  只需引用一个jQuery库文件,即可完成jQuery的环境搭建。

  选择器

  jQuery支持利用各种各样的选择器,来筛选、过滤出我们想要的元素,并且以jQuery包装集的形式返回。

  包装集

  所谓包装集,就是由jQuery函数筛选出的,支持jQuery提供的各种方法和属性的DOM元素。还包括如何动态构建一个DOM元素,并且添加到文档中。

  利用jQuery操作元素的属性与样式

  jQuery提供相应的方法获取、操作元素的属性与样式。

  事件

  通过jQuery,通过各种方法(比如bind、one、tigger等)为DOM元素添加各种方法。

  Ajax

  jQuery提供了多种方法(load、get、getjson、getscript、post、ajax)Ajax,比利用原生XMLHttpRequest对象方便很多,并且解决了不同浏览器的兼容性问题。

  动画

  jQuery提供了多种方法,为DOM元素实现动态效果,如渐变、闪烁、平移等等。

  工具函数

  jQuery提供了多种工具函数,可供直接调用,比如操作字符串、检测浏览器属性的各种方法。

  2、JavaScript零散却重要的知识

  全局对象/变量其实是window的属性。

  声明一个全局函数fn,其实是为window添加了一个fn属性,其值是一个匿名函数。因此 function fn(){} 等价于 window.fn = function(){};等价于 fn = function(){}.

  JavaScript中,this究竟是什么?如果在顶层调用,this就代表window,如果在对象中调用(函数也是对象),this就指向当前对象。

  静态方法和实例方法,先声明一个类 function staticClass(){};直接添加到类staticClass.fn()的方法为静态方法,可以直接调用;添加到类的prototype的方法staticClass.prototype.fn()为实例方法,需要先实例化var instance = new staticClass()才能调用。

  3、JavaScript prototype

  首先介绍三对概念:私有变量、函数;静态变量、函数;实例变量、函数;具体区别可以查看源文章,值得提到的一点是,只有实例变量、函数可以在实例化对象以后进行访问。

  当创建了一个函数,改函数就会被创建一个prototype属性,这个prototype属性又具有一个constructor属性,这个属性是一个指向该函数的指针。

  下一个结论:对于一个函数A,只要是赋给prototype的属性和方法,都会被A的所有实例共享。看如下代码:

  1.   function Person(name){
  2. this.name=name;
  3. }
  4.  
  5. Person.prototype.share=[];
  6.  
  7. Person.prototype.printName=function(){
  8. alert(this.name);
  9. }
  10.  
  11. var person1=new Person('Byron');
  12. var person2=new Person('Frank');
  13.  
  14. person1.share.push(1);
  15. person2.share.push(2);
  16. console.log(person2.share); //输出[1,2]

  因此在实际操作中,对象的方法(函数也是对象)一般赋给prototype成为实例函数,对象的属性(变量)一般直接声明,因为变量一般不需要共享。

  4、JavaScript创建对象

  如上所述,对象的方法(函数也是对象)一般赋给prototype成为实例函数,对象的属性(变量)一般直接声明,因为变量一般不需要共享。

  5、JavaScript命名空间实现方式和模仿分析jQuery

  JavaScript的命名空间,是利用立即执行的匿名函数,利用闭包。jQuery玩的也是这一套:

  1.   (function(){
  2. var _NS=function(){
  3.  
  4. }
  5. _NS.prototype.alert=function(){
  6. console.log('test');
  7. }
  8. window.NS=new _NS();
  9. })();

  jQuery本质上是一个事先定义好的函数,换言之是window的一个属性。它内部定义了很多有用的函数可以直接调用,也可以接受选择器字符串以后,将结果保存到相关属性中,并且将自身返回,因此可以实现多次的循环调用。其最代码结构如下:

  1. (function( window, undefined ) {
  2.  
  3. var jQuery = (function() {
  4. // 构建jQuery对象
  5. var jQuery = function( selector, context ) {
  6. return new jQuery.fn.init( selector, context, rootjQuery );
  7. }
  8.  
  9. // jQuery对象原型
  10. jQuery.fn = jQuery.prototype = {
  11. constructor: jQuery,
  12. init: function( selector, context, rootjQuery ) {
  13. // selector有以下7种分支情况:
  14. // DOM元素
  15. // body(优化)
  16. // 字符串:HTML标签、HTML字符串、#id、选择器表达式
  17. // 函数(作为ready回调函数)
  18. // 最后返回伪数组
  19. }
  20. };
  21.  
  22. //把jQuery的prototype赋值给init方法的prototype
  23. jQuery.fn.init.prototype = jQuery.fn;
  24.  
  25. // 合并内容到第一个参数中,后续大部分功能都通过该函数扩展
  26. // 通过jQuery.fn.extend扩展的函数,大部分都会调用通过jQuery.extend扩展的同名函数
  27. jQuery.extend = jQuery.fn.extend = function() {};
  28.  
  29. // 在jQuery上扩展静态方法
  30. jQuery.extend({
  31. // ready bindReady
  32. // isPlainObject isEmptyObject
  33. // parseJSON parseXML
  34. // globalEval
  35. // each makeArray inArray merge grep map
  36. // proxy
  37. // access
  38. // uaMatch
  39. // sub
  40. // browser
  41. });
  42.  
  43. return jQuery;
  44.  
  45. })();
  46.  
  47. window.jQuery = window.$ = jQuery;
  48. })(window);

  6、JavaScript闭包机制

  等有了更加深刻的认识再来下结论。

  有了这些积累,关于JavaScript和jQuery的理论知识基本上能有一个全局的了解,接下来就是要多阅读和多些代码,以加深理解。

原文章地址:

从零开始学jQuery

http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-1.html

JavaScript番外

http://www.cnblogs.com/zhangziqiu/archive/2009/05/26/jQuery-Learn-javascript.html

JavaScript prototype

http://www.cnblogs.com/dolphinX/p/3286177.html

JavaScript创建对象

http://www.cnblogs.com/dolphinX/p/3288118.html

JavaScript命名空间实现方式和模仿分析jQuery

http://www.cnblogs.com/dolphinX/p/3269145.html

http://www.cnblogs.com/dolphinX/p/3270779.html

JavaScript比闭包机制

http://www.cnblogs.com/ximenxiazi/p/5276328.html

http://www.cnblogs.com/dolphinX/archive/2012/09/29/2708763.html

JavaScript及jQuery学习小结的更多相关文章

  1. jQuery学习小结3——AJAX

    一.jQuery的Ajax方法 jQuery对Ajax 做了大量的封装,使用起来也较为方便,不需要去考虑浏览器兼容性.对于封装的方式,jQuery 采用了三层封装: 最底层的封装方法为——$.ajax ...

  2. jQuery学习小结1-CSS操作+事件

    一.DOM对象和jQuery 对象互换 1.jQuery对象 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法.比如: $(&quo ...

  3. jQuery 学习小结

    1,jQuery是一个简单的JavaScript库,提供了一系列辅助函数:以下简称jq; 使用jq时,通常将jq代码放到head部分的事件处理方法中,也可以将其单独写出 .js 文件,引入:但无论哪种 ...

  4. jQuery学习小结

    1.jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: $("#hide").clic ...

  5. jQuery学习小结2——动画

    一.基础动画 方法名 说明 show([speed,[easing],[fn]])hide([speed,[easing],[fn]]) speed:三种预定速度之一的字符串("slow&q ...

  6. 大量Javascript/JQuery学习教程电子书合集

    [推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人   不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小   15天学会jQuery(完整版).pd ...

  7. [推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人

    不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小   15天学会jQuery(完整版).pdf 274.79 KB   21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...

  8. jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能

    ▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...

  9. JavaScript和jQuery的学习

    还有12天就要回学校了,我的假期计划还能实现吗?在这12天里,需要把JavaScript和jQuery学完.我知道这两个技术对于前端网页开发非常重要.前期把HTML和CSS学完了,学的不是特别深,只是 ...

随机推荐

  1. Autolayout 02

    Working with Auto Layout Programmatically 如果你在运行阶段添加或者移除views你就需要通过代码来添加约束来保证你的interface能正确适应size或者o ...

  2. mysql null与not null

    http://blog.csdn.net/fwkjdaghappy1/article/details/7703974/ NULL表示 值 可为NULL,并非空的意思, NOT NULL表示 值不能为N ...

  3. Flutter接入极光推送

    (1)搜索 https://pub.dartlang.org/packages/jpush_flutter ,安装插件,并且按照官方配置 /android/app/build.gradle andro ...

  4. linux网络管理之网络基础

    iso/osi模型 OSI七层框架每层作用 应用层:用户操作的层 表示层:二进制数据与显示数据之间的转换,也是加密的地方 会话层:确定网络传输还是本地存储,是邮件还是ppt等 传输层:确定tcp还是u ...

  5. python函数式编程学习之map,reduce,filter,sorted

    map(f, list)函数用于将函数f运用到list里的每个元素中 写个例子 def pow(x): return x*x map(pow, [2,3,4]) reduce(f, list)函数用于 ...

  6. 连接Zookeeper操作

    public class ZKConnector implements Watcher{ private static final Logger logger =LoggerFactory.getLo ...

  7. 有用PHP依赖管理工具Composer新手教程

    PHP依赖管理工具Composer新手教程 Composer 是 PHP 的一个依赖管理工具.它同意你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 依赖管理 Composer 不是一个包管理 ...

  8. koajs 项目实战(一)

    (一)koa 1.Koa(koajs)--  基于 Node.js 平台的下一代 web 开发框架 koa1 npm install koa -g npm install koa-generator ...

  9. openssl之BIO系列之22---Cipher类型的BIO

    Cipher类型BIO ---依据openssl doc\crypto\bio_f_cipher.pod翻译和自己的理解写成 (作者:DragonKing, Mail: wzhah@263.net , ...

  10. 使用Apache Benchmark做压力测试遇上的5个常见问题

    这一篇文章主要记录我在使用Apache Benchmark(一下检测ab)做网站压力测试的过程中,遇到的一些问题以及解决办法,方便日后使用. 这一篇文章主要记录我在使用Apache Benchmark ...