本系列文章由石川创作,李松峰翻译,W3ctech.com首发,图灵社区转载。
“OOP与jQuery”是“解码jQuery”系列中的一个子系列,主要讨论jQuery的内部构成及相关的OOP(Object Oriented Programming,面向对象编程)概念。
在上一篇中,我们以jQuery代码为例解释了变量(数据)和函数的概念。本篇将通过jQuery来介绍对象。
1.对象就是对象,跟人和椅子一样
既然我们讨论的是面向对象编程,那对象是什么呢?对象就是对象,比如苍井空老师就是一个对象,桌椅或狗也是对象。所谓面向对象。不过就是用编程语言来表示对象而已。
如上所述,那么shichuan就是一个对象。因此在OOP中,可以用一个对象来表示他:
var shichuan = {};
每个对象,都可以有属性和方法(行为)。比如,shichuan的头发是黑色的,这就是他的属性。因为天生就是黑色的, 他不用时不时地把头发染黑,所有它不是方法(行为)。我们可以把这个属性添加到shichuan对象中:
var shichuan = {
hair : "black"
};
好了,假设shichuan有一个特长是骑独角兽,那么骑独角兽(riding unicorn)就是他的一个方法(行为)。用OOP来表 示,就是这样:
var shichuan = {
hair : "black",
ridingUnicorn : function() {
// 我怎么骑独角兽
}
};
总结一下对象的概念:
1. 包含对象的变量名叫vshichuan。
2. 对象的内容被包含在{和}中。
3. 对象的元素(属性和方法)用逗号来分隔。
4. 键/值对用冒号分隔,比如key : value(或者上面例子的hair : "black")。
2. jQuery中的对象
那么,jQuery中是怎么是使用对象的呢?还记得我们在第一篇文章里谈到的jQuery的局部副本吧。下面我们就看看jQuery 函数的内部(大约在第4行),实际上这个函数里只有一行代码,其注释说:jQuery对象实际上就是一个“增强版的”init 构造函数。那这个增强的init是什么样呢?
var jQuery = function() {
// jQuery对象实际上就是一个“增强版的”init构造函数
return new jQuery.fn.init(selector, context, rootjQuery);
}
如果你在代码里搜索“jQuery.fn”,在大约第76行可以找到它,大致是这样的:
jQuery.fn = jQuery.prototype = {
constructor : jQuery,
init : function(selector, context, rootjQuery) {
.......
},
......
}
jQuery的原型(下一篇文章将介绍原型)——jQuery.prototype,是一个对象,一个大对象。这个对象有很多很多属 性和方法。比如,它的属性有constructor、selector、jquery、length,等等;它的方法有init、size、toArray、 get、pushStack,等等。
3. 函数是数据,也是对象
在第一篇文章中,我们说过函数就是数据,通过以下两种方式定义jQuery函数,结果是相同的:
// 局部 jQuery
function jQuery(selector, context) {
// .......
}
// 局部 jQuery
var jQuery = function(selector, context) {
// ........
}
实际上,还有第三种方法:
// 局部 jQuery
var jQuery = new Function("selector", "context", "// .......");
在OOP中,使用new加构造函数(这里的Function)是创建新对象的典型方式。虽然这种方法也能创建函数,但通常 并不是最好的方式,因为JavaScript会是使用eval对传入的源代码进行求值。
分享到:
相关推荐
通过这个方法,我们可以定义新的jQuery对象方法,从而封装重复的代码逻辑。 2. **闭包和作用域**: 在jQuery面向对象编程中,理解闭包和作用域至关重要。闭包允许我们在函数内部访问外部变量,而不会被垃圾回收机制...
#### 二、jQuery与OOP jQuery是一个快速、简洁的JavaScript库,极大地简化了DOM操作、事件处理、动画效果以及AJAX交互等功能。从jQuery的实现中,我们可以看到很多面向对象的设计思想。 ##### 1. 源码结构分析 ...
《jQuery JS OOP:深入理解JavaScript面向对象编程》 在JavaScript的世界里,面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它允许我们以类和对象的方式来组织代码,提高代码的复用...
**二、面向对象编程** 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,通过封装、继承和多态性来组织代码。在JavaScript中,我们可以使用构造函数和原型来实现面向对象。在创建滚动广告时,我们...
Java是一种广泛使用的面向对象编程语言(JavaOOP),其特性包括封装、继承、多态和抽象。JavaOOP允许开发者创建可复用的代码模块,提高效率。面试时,面试官可能会询问关于类、对象、接口、异常处理和集合框架等方面...
3. **面向对象编程**:PHP5之后版本完全支持面向对象编程(OOP),包括类、接口、继承、封装等概念。 4. **错误处理机制**:通过设置错误级别和使用异常处理来提高程序的健壮性和调试效率。 5. **安全性**:PHP内置...
在JavaScript中,jQuery库通常用于简化DOM操作和事件处理,但它本身并不支持面向对象编程(OOP)模式。然而,开发者可以通过模拟类和对象来实现OOP概念。在“form_builder”项目中,jQuery OOP可能指的是通过函数...
《构建LocalWeather单页应用:HTML5、JS OOP、jQuery、AJAX与CSS3的融合》 在当今的Web开发领域,构建交互性强、用户体验优秀的单页应用程序(SPA)已经成为一种趋势。本项目“LocalWeather”正是这样一个例子,它...
#OOP 井字游戏 客观的 该项目的重点是构建一个面向对象的全前端井字游戏。 代码的一个重点是构建一些可以在不使用存储的情况下保持棋盘状态/分数/并在游戏过程中翻转的东西。 使用的技术 Javascript 查询 HTML5 ...
PHP-OOP-快速入门PHP 面向对象的快速入门Quickstart 是一个 PHP 面向对象的创建程序。 设置项目参数后,Quickstart 将生成您需要的类、动作文件和模板页面。 Quickstart 不使用数据库,而是使用设置和项目文件,因此...
标题中的“jquery采用oop模式class类的使用示例”指的是将jQuery与JavaScript的面向对象特性结合,通过创建自定义类来管理jQuery的功能。这通常涉及到以下概念: 1. **构造函数**:在JavaScript中,类实际上是一个...
- **Class-based OOP**:Prototype引入了基于类的面向对象编程模型,允许开发者创建类和实例。 - **Ajax组件**:Prototype的Ajax模块提供了一套完整的解决方案,包括`Ajax.Request`和`Ajax.Updater`等类。 在项目中...
在这个项目"js-object-with-accessors"中,我们看到开发者旨在利用JavaScript的面向对象编程(OOP)特性来创建一个基础架构,该架构包含访问器(accessors),同时也为jQuery元素提供了对象包装器。下面将详细探讨这...
面向对象程序设计(OOP)是编程的一种范式,它将数据和操作数据的方法封装在一起,形成对象。在JavaScript中,可以通过构造函数和原型链实现OOP。在七夕动画项目中,可以创建一个表示动画对象的构造函数,包含动画的...
这个项目名为“the_newsroom”,它是一个使用 jQuery 对象导向编程(OOP)、Ajax 技术和 Yahoo Query Language(YQL)构建的新闻应用程序。这个应用旨在提供一个动态且交互式的用户体验,通过实时获取和展示新闻数据...
这个特定的系统是用PHP编程语言实现的,利用了面向对象编程(OOP)的概念,以及HTML、CSS来构建用户界面,AJAX和jQuery提供交互性,而MySQLi作为后端数据库存储试题和用户数据。以下是对这些技术在该系统中的应用...
这是一个基于Web的销售系统,利用了现代Web开发技术,包括PHP 7的面向对象编程(Object-Oriented Programming, OOP)、Ajax、jQuery和MySQL数据库。这个系统旨在提供一个高效、用户友好的在线销售平台。 首先,让...
3. **jQuery与Ajax**: - jQuery简化了Ajax操作,提供`.ajax()`, `.post()`, `.get()`等方法。在CRUD操作中,它们用于在后台处理数据的同时保持页面状态。 - `$.ajax()`是核心方法,可以设置请求的详细配置,包括...
首先,面向对象(Object-Oriented Programming, OOP)是软件工程中的一种重要设计思想,它将复杂的问题分解为多个相互独立的对象,通过对象之间的交互完成任务。在“植物大战僵尸”游戏中,我们可以创建如植物、僵尸...