`
Teddy_MaLi
  • 浏览: 6747 次
  • 性别: Icon_minigender_1
  • 来自: 景德镇
最近访客 更多访客>>
社区版块
存档分类
最新评论

OOP与jQuery(一):变量和函数

 
阅读更多

本系列文章由石川创作,李松峰翻译,W3ctech.com首发,图灵社区转载。

 

解码jQuery系列

光开发源代码是不够的。为了让开源进一步开放,在“解码jQuery”系列中,我们会剖析jQuery的每一个方法。领略jQuery框架之美,同时向这个框架背后的天才们致敬。

 

“OOP与jQuery”是“解码jQuery”系列中的一个子系列,主要讨论jQuery的内部构成及相关的OOP(Object Oriented Programming,面向对象编程)概念。

 

学习OOP概念的最佳方式,就是剖析一个真实的框架。学习某个框架的最佳方式,就是领会其中的OOP概念。

 

jQuery核心(vcore.js)是jQuery的“大脑”,其中涉及五个重要概念:变量(数据)、函数、对象、原型和继承。这五个方面是jQuery核心的五个“”脑叶,又是探求OOP概念的五个“意识”。

整个jQuery库都浓缩在一个jQuery变量中。实际上,core.js中有两个jQuery变量(var jQuery),一个是全局的,另一个是局部的。今天我们就通过jQuery来了解JavaScript中的变量和函数这两个概念。下面就是刚提到的两个jQuery变量。

// 全局 jQuery

var jQuery = (function(){
      //   局部 jQuery
      var jQuery = function(selector, context) {
            //.....
      }
})();

 

1.变量保存数据,函数也是数据

 

   我们先来看一看局部的jQuery:

 

// 局部 jQuery

var jQuery = function(selector, context) {
      // ....
}

 

    JavaScript中的函数实际上是数据。也就是说,通过以下两种方式定义jQuery函数,结果是相同的:

// 局部 jQuery

function jQuery (selector, context) {
      // .....
}

// 局部 jQuery

var jQuery = function(selector, context) {
       // ......
}

 

2.函数可以匿名

 

    再来看一看全局的jQuery:

 

// 全局 jQuery

var jQuery = (function() {
      //  .....
})();

 
    从中把函数部分提取出来,就会发现它是匿名的:

 

function() {

       // .....

}

 

   在JavaScript中,可以不把数据赋值给变量,而数据照样可以存在。比如,下面这个字符串可以存在于JavaScript代码      中,而且不会返回任何错误:

 

“I am data and I don't cause error.”

 

    前面第1点提到了“函数是数据”,因此函数也可以独立存在,而不需要被赋值给某个变量。假如你运行上面的匿名函数,     它100%可以运行,而且不会导致任何错误。那匿名函数有什么用呢?下一点就来回答这个问题。

 

3.匿名函数可以自调用

 

    匿名函数的一个优点是可以作为自调用的函数来使用。举个例子,下面的函数在页面加载时会自动执行,你可以在控制       台看到输出:

 

var jQuery = (function() {

       console.log("I am self-invoking.");

})();

 

    那为什么要像这样来使用匿名函数呢?因为这样可以在不创建全局变量的情况下执行一些内部操作。jQuery使用匿名自     调用函数来完成它的一次性初始化。

分享到:
评论

相关推荐

    jquery_js_oop

    虽然jQuery的核心API主要基于链式调用和函数式编程,但开发者可以利用JavaScript的OOP特性来构建复杂的jQuery插件。通过构造函数创建自定义对象,利用原型扩展功能,实现插件的可配置性和可扩展性。 7. **面向对象...

    JQuery高级编程之面向对象.rar

    在jQuery中,我们可以定义一个构造函数来初始化对象,并在其中设置属性和方法。 4. **原型链和继承**: jQuery对象可以通过原型链实现继承,这样可以复用父类的方法和属性。使用`$.extend()`或`Object.create()`可以...

    开发参考文档-javscript&PHP5;参考手册

    3. **类和对象**:面向对象编程(OOP)的概念,包括类的定义、对象的创建、继承、封装和多态。 4. **数组处理**:创建、遍历、操作数组,以及PHP5中的关联数组和多维数组。 5. **数据库操作**:使用MySQLi或PDO...

    面试题php

    - 字符串函数:了解strlen、strpos、substr、str_replace等常用字符串操作函数。 - 数组函数:理解array_push、array_pop、array_merge、foreach循环等数组操作。 3. **面向对象编程(OOP)** - 类与对象:创建...

    javascript例子

    这一章节主要介绍JavaScript的基本语法,包括变量声明、数据类型(如字符串、数字、布尔值、null、undefined等)、运算符(算术、比较、逻辑、赋值等)、控制结构(条件语句if...else、循环for、while、do...while)...

    javascipt教程

    - jQuery是一个流行的库,简化了DOM操作、事件处理和Ajax交互。 "Javascipt.chm"可能是一个包含JavaScript详细教程的CHM帮助文件,你可以通过它深入学习各种概念和技术。"使用说明文档.txt"则可能提供了如何阅读和...

    JavaScript内核系列

    - 函数:讲解JavaScript中函数的定义、调用、作用域和闭包等高级特性。 - 数组:介绍JavaScript数组的操作方法和特性。 - 正则表达式:解释了如何使用正则表达式进行字符串的模式匹配和搜索。 - 闭包:深入探讨闭包...

    [ASP.NET,PHP,Javascript,Ajax教程].Wrox.-.Beginning.Php,.Apache,.Mysql.Web.Development.

    2. **函数和类**:掌握自定义函数的创建和面向对象编程(OOP)概念,如类、对象、继承、封装和多态性。 3. **数据库交互**:使用PDO或mysqli库连接MySQL数据库,执行SQL查询。 4. **错误和异常处理**:了解如何处理...

    python基础 接近10万字+web全栈

    - `notepad++`:一个功能强大的源代码编辑器和支持多语言的文本编辑器。 - `sublimetext3`:提供多种高级功能,如多选、宏、插件等。 通过本教程的学习,读者不仅能掌握Python语言的基础知识,还能深入了解Web...

    面向对象,JQuery,javascript,java基础,mybatis的接口开发的思维导图

    JavaScript 支持函数作为一等公民,这意味着函数可以赋值给变量、作为参数传递和作为返回值。ES6(ECMAScript 2015)引入了许多新特性,如箭头函数、模板字符串、let和const声明、解构赋值以及类的概念,进一步增强...

    21天学通JavaScript(第5版)- 源代码

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,它的主要任务是增强用户界面,与用户交互,以及处理数据。在21天学通JavaScript(第5版)这本书中,作者张启玉和刘刚深入浅出地介绍了JavaScript的核心概念和...

    Headfirst随书源码集合(jsp,jq,java,js,ajax,软件开发)

    JavaScript涉及的核心概念有变量、数据类型、控制结构、函数、闭包、原型链和异步编程(如Promise和async/await)。现代JavaScript还引入了模块系统(如CommonJS和ES6模块)、类和箭头函数等新特性。 5. **AJAX**:...

    自己对JS的一个透析

    - **基于对象的语言**:虽然JavaScript不是一种传统的面向对象编程语言,但它支持面向对象编程(OOP)的一些特性,如封装、继承和多态。JavaScript的对象可以通过构造函数或对象字面量创建,并且可以通过原型链实现...

    一个不错的JavaScript的学习软件

    同时,JavaScript中的构造函数和原型也是重要的OOP概念。 8. Promise和异步编程:Promise是处理异步操作的一种方式,它提供了更好的错误处理和避免回调地狱的能力。 9. ES6新特性:箭头函数、模板字符串、let和...

    JavaScriptPocketGuide.pdf

    3. **Angular**:一个完整的框架,提供了构建大型Web应用程序所需的一切工具和服务。 ### 八、最佳实践 1. **模块化**:将代码组织成小的、可重用的模块。 2. **代码质量**:编写清晰、易于理解的代码,并遵循一致...

    国内外 JavaScript 经典封装

    1. **面向对象编程(OOP)**:在JavaScript中,面向对象编程主要通过构造函数、原型链和类(ES6引入)来实现。理解如何创建对象、继承和封装是提升代码复用性和可维护性的重要一环。 2. **模块化**:JavaScript的...

    javascript教程

    3. **对象**:对象的创建、属性和方法、原型链、构造函数、面向对象编程(OOP)概念。 4. **数组和字符串操作**:数组的方法(如push、pop、shift、unshift、splice等)、字符串的方法(如substring、indexOf、...

    skoleni-jquery

    - 2 列缩进 - 位置:静态、相对、绝对、固定 - 显示:块,内联块,内联 - Bootstrap 网格系统 - JavaScript 变量的有效性 - 最小化对全局变量的依赖 - OOP - Backbone 的 OOP - 该函数也是一个对象 - 高级:(默认...

Global site tag (gtag.js) - Google Analytics