JavaScript专题JavaScript面向对象上.ppt
JavaScript 专题 JavaScript面向对象上,姜 昊,ITCAST签约讲师,本讲概述,通过本讲的学习你将学到:JS中的对象JS中继承对象成员window对象作用域链,引言,在Java语言中有一句非常著名的话Everything is Object。在JS中也是一样,所有的东西都是对象。对象是一切的基础,在本讲中首先给大家介绍下什么是对象。,JS中的对象,对象就是包含一组变量和函数的集合实例。通常对象由类派生而来,而类定义了对象拥有的属性和方法。如果你的脚本都是对象之间的交互操作那么就可以说这个脚本是面向对象的脚本。JavaScript是一种基于原型(prototype)的面向对象的语言,没有类的概念,所有的一切都派生自现有对象的一个副本。,JavaScript中的对象分为以下2类:Function对象,例如alert()函数可以使用参数改变此类对象的功能如alert(“abc”)Object对象,这类对象无法像Function类对象那样调用,而且具有固定的功能。如:var obj=new Object();obj(“abc”);/会报错,因为obj不是Function类型的对象Function类型对象也分为2类:Function实例,例如alert(),可以使用参数来调用。做为构造函数的Function,必须通过new关键字来进行实例化。,为了提高使用效率,JavaScript提供了下列内置对象。Object是通用基础对象,可以使用它来创建简单的静态对象。其简写是。Function是被所有使用参数的对象复制的对象,也是在脚本中定义函数时所创建的对象,其简写是function()。Array是一种特殊的属性和方法的集合,比如使用它的length属性可以迭代操作这类对象,使用方括号加序号也可以访问它的属性。其简写是。String、Boolean、Number分别用来表示字符串、布尔值、数字。除此之外还有Math、Date、RegExp及其他内置对象。,所有的内置对象都可以通过new关键字或其简单语法形式来建对象。如:var obj=new Object();等同于var obj=;var arry=new Array();等同于var arry=;其他的就不做举例了,继承,继承是面向对象中重要的组成部分。当创建自己的对象时你可以扩展或继承现有对象的属性和方法。继承为重用对象提供了便捷的途径,这样你就可以把精力完全集中于新的改进代码中。与传统的面向对象语言不同,JavaScript是基于原型的面向对象这就导致无法从一个类扩展出另一个类的底层类结构。在JS中继承是通过简单的从一个对象原型向另一个对象原型复制方法而实现的。,function init()var person=;/等同于var person=new Object();person.getName=function()alert(person name);person.getAge=function()alert(person age);/创建另一个对象var student=;student.getStuNum=function()alert(student stuNum);/创建其本身的方法student.getName=person.getName;person.getName=function()alert(person1 name);student.getAge=person.getAge;student.getName();person.getName();,对象是什么?,数组的两种实现方案顺序数组、散列数组(key,value)对象关联数组属性包存储体对象只有成员访问操作,原型/对象 属性包,原型只存在于function中,它实质就是一个对象被创建后引擎默认创建一个空的prototype对象,既然对象是属性包那么原型也就是一个属性包。原型中读的时候从原型链上读,写的时候往自己里面写。,function Obect2()function Object3()Object3.prototype=new Object2();Object.propertype.foo=aObj=new Object3();aObj.foo()Object2.prototype.foo=aObj.foo();,对象成员,你已经理解了一些简单的老函数如alert(),但是当你使用document的body属性或者document的getElementById()方法时,你时在访问document对象的一个成员。以上属性和方法都被称为对象的成员,因为他们都从属于父对象,这个父对象就是上面例子中的document。其中body时属性getElementById是方法。实际上属性自身只是一个Object对象或扩展自Object对象的实例。方法也扩展自Object对象但是它可以接收属性所以他是Function对象的实例,还有就是方法可以有返回值。请看下例子,window对象,我们写的大部分方法都是隶属于window对象的。在下面的例子中:function myFunction(message)alert(message);该方法实际上都是全局window的对象方法。所以myFunction(“aaa”)等同于window.myFunction(“aaa);,覆盖作用域链中的对象,function override()var alert=function(message)window.alert(override+message);alert(alert);window.alert(window.alert);override();alert(alert from outside);,小 结,通过本讲的学习你应该已经掌握了JS中的对象JS中的继承根据继承原理引出原型对象成员window对象作用域链下一讲将介绍如何创建自己的对象,谢谢!,