本系列文章由石川创作,李松峰翻译,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的核心API主要基于链式调用和函数式编程,但开发者可以利用JavaScript的OOP特性来构建复杂的jQuery插件。通过构造函数创建自定义对象,利用原型扩展功能,实现插件的可配置性和可扩展性。 7. **面向对象...
在jQuery中,我们可以定义一个构造函数来初始化对象,并在其中设置属性和方法。 4. **原型链和继承**: jQuery对象可以通过原型链实现继承,这样可以复用父类的方法和属性。使用`$.extend()`或`Object.create()`可以...
3. **类和对象**:面向对象编程(OOP)的概念,包括类的定义、对象的创建、继承、封装和多态。 4. **数组处理**:创建、遍历、操作数组,以及PHP5中的关联数组和多维数组。 5. **数据库操作**:使用MySQLi或PDO...
- 字符串函数:了解strlen、strpos、substr、str_replace等常用字符串操作函数。 - 数组函数:理解array_push、array_pop、array_merge、foreach循环等数组操作。 3. **面向对象编程(OOP)** - 类与对象:创建...
这一章节主要介绍JavaScript的基本语法,包括变量声明、数据类型(如字符串、数字、布尔值、null、undefined等)、运算符(算术、比较、逻辑、赋值等)、控制结构(条件语句if...else、循环for、while、do...while)...
- jQuery是一个流行的库,简化了DOM操作、事件处理和Ajax交互。 "Javascipt.chm"可能是一个包含JavaScript详细教程的CHM帮助文件,你可以通过它深入学习各种概念和技术。"使用说明文档.txt"则可能提供了如何阅读和...
- 函数:讲解JavaScript中函数的定义、调用、作用域和闭包等高级特性。 - 数组:介绍JavaScript数组的操作方法和特性。 - 正则表达式:解释了如何使用正则表达式进行字符串的模式匹配和搜索。 - 闭包:深入探讨闭包...
2. **函数和类**:掌握自定义函数的创建和面向对象编程(OOP)概念,如类、对象、继承、封装和多态性。 3. **数据库交互**:使用PDO或mysqli库连接MySQL数据库,执行SQL查询。 4. **错误和异常处理**:了解如何处理...
- `notepad++`:一个功能强大的源代码编辑器和支持多语言的文本编辑器。 - `sublimetext3`:提供多种高级功能,如多选、宏、插件等。 通过本教程的学习,读者不仅能掌握Python语言的基础知识,还能深入了解Web...
JavaScript 支持函数作为一等公民,这意味着函数可以赋值给变量、作为参数传递和作为返回值。ES6(ECMAScript 2015)引入了许多新特性,如箭头函数、模板字符串、let和const声明、解构赋值以及类的概念,进一步增强...
JavaScript是一种广泛应用于网页和网络应用的脚本语言,它的主要任务是增强用户界面,与用户交互,以及处理数据。在21天学通JavaScript(第5版)这本书中,作者张启玉和刘刚深入浅出地介绍了JavaScript的核心概念和...
JavaScript涉及的核心概念有变量、数据类型、控制结构、函数、闭包、原型链和异步编程(如Promise和async/await)。现代JavaScript还引入了模块系统(如CommonJS和ES6模块)、类和箭头函数等新特性。 5. **AJAX**:...
- **基于对象的语言**:虽然JavaScript不是一种传统的面向对象编程语言,但它支持面向对象编程(OOP)的一些特性,如封装、继承和多态。JavaScript的对象可以通过构造函数或对象字面量创建,并且可以通过原型链实现...
同时,JavaScript中的构造函数和原型也是重要的OOP概念。 8. Promise和异步编程:Promise是处理异步操作的一种方式,它提供了更好的错误处理和避免回调地狱的能力。 9. ES6新特性:箭头函数、模板字符串、let和...
3. **Angular**:一个完整的框架,提供了构建大型Web应用程序所需的一切工具和服务。 ### 八、最佳实践 1. **模块化**:将代码组织成小的、可重用的模块。 2. **代码质量**:编写清晰、易于理解的代码,并遵循一致...
1. **面向对象编程(OOP)**:在JavaScript中,面向对象编程主要通过构造函数、原型链和类(ES6引入)来实现。理解如何创建对象、继承和封装是提升代码复用性和可维护性的重要一环。 2. **模块化**:JavaScript的...
3. **对象**:对象的创建、属性和方法、原型链、构造函数、面向对象编程(OOP)概念。 4. **数组和字符串操作**:数组的方法(如push、pop、shift、unshift、splice等)、字符串的方法(如substring、indexOf、...
- 2 列缩进 - 位置:静态、相对、绝对、固定 - 显示:块,内联块,内联 - Bootstrap 网格系统 - JavaScript 变量的有效性 - 最小化对全局变量的依赖 - OOP - Backbone 的 OOP - 该函数也是一个对象 - 高级:(默认...