JavaScript面向对象简介

上传人:206****923 文档编号:37503739 上传时间:2018-04-17 格式:DOC 页数:11 大小:196KB
返回 下载 相关 举报
JavaScript面向对象简介_第1页
第1页 / 共11页
JavaScript面向对象简介_第2页
第2页 / 共11页
JavaScript面向对象简介_第3页
第3页 / 共11页
JavaScript面向对象简介_第4页
第4页 / 共11页
JavaScript面向对象简介_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《JavaScript面向对象简介》由会员分享,可在线阅读,更多相关《JavaScript面向对象简介(11页珍藏版)》请在金锄头文库上搜索。

1、JavaScript面面向向对对象象简简介介JavaScript 的核心是支持面向对象的,同时它也提供了强大灵活的 OOP 语言能力。本文从对面向对象编程的介绍开始,带您探索 JavaScript 的对象模型,最后描述 JavaScript 当中面向对象编程的一些概念。复复习习JavaScript如果您对 JavaScript 的概念(如变量、类型、方法和作用域等)缺乏自信,您可以在重新介绍 JavaScript 这篇文章里学习这些概念。您也可以查阅这篇 JavaScript 1.5 核心指南。面面向向对对象象编编程程面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的

2、范例,包括模块化,多态和封装几种技术。今天,许多流行的编程语言(如 Java,JavaScript,C,C+ +,Python,PHP,Ruby 和 Objective-C)都支持面向对象编程(OOP)。面向对象编程可以看作是使用一系列对象相互协作的软件设计,相对于传统观念,一个程序只是一些函数的集合,或简单的计算机指令列表。 在 OOP 中,每个对象能够接收邮件,处理数据和发送消息给其他对象。每个对象都可以被看作是一个独立的小机器有不同的作用和责任。面向对象程序设计的目的是促进更好的编程灵活性和可维护性,并在大型软件工程中广为流行。凭借其十分 注重的模块化,面向对象的代码开发更简单,往后维护

3、更容易理解,使其自身能更直接的分析,编码,理解复杂的情况和过程,比非模块化编程方法省事。1术术语语NamespaceNamespace 命名空间命名空间 允许开发人员在一个专用的名称下捆绑所有功能代码的容器。ClassClass 类类定义对象的特征。ObjectObject 对象对象 类的一个实例。PropertyProperty 属性属性 对象的特征,比如颜色。MethodMethod 方法方法 对象的能力,比如行走。ConstructorConstructor 构造函数构造函数 实例化时调用的函数。InheritanceInheritance 继承继承 一个类可以继承另一个类的特征。Enc

4、apsulationEncapsulation 封装封装 类定义了对象的特征,方法只定义了方法如何执行。AbstractionAbstraction 抽象抽象 结合复杂的继承,方法,属性,一个对象能够模拟现实的模型。PolymorphismPolymorphism 多态多态 多意为许多,态意为形态。不同类可以定义相同的方法或属性。更多关于面向对象编程的描述,请参照维基百科的 面向对象编程 。原原型型编编程程基于原型的编程不是面向对象编程中体现的风格,且行为重用(在基于类的语言中也称为继承)是通过装饰 它作为原型的现有对象的过程实现的。这种模式也被称为弱类化,原型化,或基于实例的编程。原始的(也

5、是最典型的)基于原型语言的例子是由大卫安格尔和兰德尔史密斯开发的。然而,弱类化的编程风格近来变得越来越流行,并已被诸如JavaScript,Cecil,NewtonScript,IO,MOO,REBOL,Kevo,Squeak(使用框架操纵 Morphic组件),和其他几种编程语言采用。1JavaScript面面向向对对象象编编程程命命名名空空间间命名空间是一个容器,它允许开发人员在一个独特的,特定于应用程序的名称下捆绑所有的功能。 在在JavaScript 中,命名空中,命名空间间只是另一个包含方法,属性,只是另一个包含方法,属性,对对象的象的对对象。象。需要认识到非常重要的一点,与其他面向

6、对象编程语言中的普通对象和命名空间相比,它们在语言层面上没 有区别。创造的 JavaScript 命名空间背后的想法很简单:一个全局对象被创建,所有的变量,方法和功能成为该对象的属性。使用命名空间也最大程度地减少应用程序的名称冲突的可能性。我们来创建一个全局变量叫做 MYAPP/ 全局命名空间 var MYAPP = MYAPP | ;在上面的代码示例中,我们首先检查 MYAPP 是否已经被定义(是否在同一文件中或在另一文件)。如果是的话,那么使用现有的 MYAPP 全局对象,否则,创建一个名为 MYAPP 的空对象用来封装方法,函数,变量和对象。我们也可以创建子命名空间:/ 子命名空间 MY

7、APP.event = ;下面是用于创建命名空间和添加变量,函数和方法的代码写法:/ 给普通方法和属性创建一个叫做 MYAPP.commonMethod 的容器MYAPP.commonMethod = regExForName: “, / 定义名字的正则验证regExForPhone: “, / 定义电话的正则验证validateName: function(name)/ 对名字 name 做些操作,你可以通过使用“this.regExForname” / 访问 regExForName 变量,validatePhoneNo: function(phoneNo)/ 对电话号码做操作 / 对象和

8、方法一起申明 MYAPP.event = addListener: function(el, type, fn) / 代码,removeListener: function(el, type, fn) / 代码,getEvent: function(e) / 代码/ 还可以添加其他的属性和方法/使用 addListner 方法的写法: MYAPP.event.addListener(“yourel“, “type“, callback);标标准准内内置置对对象象JavaScript 有包括在其核心的几个对象,例如,Math,Object,Array 和 String 对象。下面的例子演示了如何

9、使用 Math 对象使用其随机()方法来获得一个随机数。console.log(Math.random();注意:注意:T 这里和接下来的例子都假设名为 console.log 的方法全局有定义。console.log 实际上不是 JavaScript 自带的。查看 JavaScript 参考:全局对象 了解 JavaScript 内置对象的列表。JavaScript 中的每个对象都是 Object 对象的实例且继承它所有的属性和方法。自自定定义义对对象象类类JavaScript 是一种基于原型的语言,它没类的声明语句,比如 C+ +或 Java 中用的。这有时会对习惯使用有类申明语句语言的程

10、序员产生困扰。相反,JavaScript 可用方法作类。定义一个类跟定义一个函数一样简单。在下面的例子中,我们定义了一个新类 Person。function Person() / 或 var Person = function() 对对象象(类类的的实实例例)我们使用 new obj 创建对象 obj 的新实例, 将结果(obj 类型)赋值给一个变量方便稍后调用。在下面的示例中,我们定义了一个名为 Person 的类,然后我们创建了两个 Person 的实例(person1 and person2).function Person() var person1 = new Person(); v

11、ar person2 = new Person();有两种为对象创建实例,请参考 Object.create 。构构造造器器在实例化时构造器被调用 (也就是对象实例被创建时)。构造器是对象中的一个方法。 在 JavaScript,中函数就可以作为构造器使用,因此不需要特别地定义一个构造器方法. 每个声明的函数都可以在实例化后被调用执行构造器常用于给对象的属性赋值或者为调用函数做准备。 在本文的后面描述了类中方法既可以在定义时添加,也可以在使用前添加。在下面的示例中, Person 类实例化时构造器调用一个 alert 函数。function Person() alert(Person inst

12、antiated); var person1 = new Person(); var person2 = new Person();属属性性 (对对象象属属性性)属性就是 类中包含的变量;每一个对象实例有若干个属性. 为了正确的继承,属性应该被定义在类的原型属性 (函数)中。可以使用 关键字 this 调用类中的属性, this 是对当前对象的引用。 从外部存取(读/写)其属性的语法是:InstanceName.Property; 这与 C+,Java 或者许多其他语言中的语法是一样的 (在类中语法this.Property 常用于 set 和 get 属性值)在下面的示例中,我们为定义 Pe

13、rson 类定义了一个属性 firstName 并在实例化时赋初值。function Person(firstName) this.firstName = firstName;alert(Person instantiated); var person1 = new Person(Alice); var person2 = new Person(Bob);/ Show the firstName properties of the objects alert(person1 is + person1.firstName); / alerts “person1 is Alice“ alert(p

14、erson2 is + person2.firstName); / alerts “person2 is Bob“ 方方法法方法与属性很相似, 不同的是:一个是函数,另一个可以被定义为函数。 调用方法很像存取一个属性, 不同的是 add () 在方法名后面很可能带着参数. 为定义一个方法, 需要将一个函数赋值给类的 prototype属性; 这个赋值给函数的名称就是用来给对象在外部调用它使用的。在下面的示例中,我们给 Person 类定义了方法 sayHello(),并调用了它.function Person(firstName) this.firstName = firstName;Pers

15、on.prototype.sayHello = function() alert(“Hello, Im “ + this.firstName); ; var person1 = new Person(“Alice“); var person2 = new Person(“Bob“);/ call the Person sayHello method. person1.sayHello(); / alerts “Hello, Im Alice“ person2.sayHello(); / alerts “Hello, Im Bob“在 JavaScript 中方法通常是一个绑定到对象中的普通函数

16、, 这意味着方法可以在其所在 context 之外被调用。 思考下面示例中的代码:function Person(firstName) this.firstName = firstName; Person.prototype.sayHello = function() alert(“Hello, Im “ + this.firstName); ;var person1 = new Person(“Alice“); var person2 = new Person(“Bob“); var helloFunction = person1.sayHello;person1.sayHello(); / alerts “Hello, Im Alice“ person2.sayHello(); /

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号