轻松拿下JavaScript(二)——面向对象
JS中的对象:
JavaScript是一种基于原型的面向对象的语言,没有类的概念,所有的一切都派生自现有对象的一个副本。
对象分为以下两类:
function对象,例如alert()函数可以使用参数改变此类对象的功能如alert(“abc”)。传什么打印出什么。
object对象,这类对象无法像function类对象那样调用,而且具有固定的功能。
为了提高使用效率,JavaScript提供了下列内置对象。
object是通用基础对象,可以使用它来创建简单的静态对象,其简写是{}。
- var obj=new Object();
- var obj={};
Function是被所有使用参数的对象复制的对象,也是在脚本中定义函数时所创建的对象,其简写是function(){}。
- var myFunction=new function(",");
- function myFunction(){
- }
Array是一种特殊的属性和方法的集合,比如使用它的length属性可以迭代操作这类对象,使用方括号加序号也可以访问它的属性。其简写是[]。
- var arry=new Array();
- var arry=[];
String、Boolean、Number分别用来表示字符串、布尔值、数字。
除此之外还有Math、Date、RegExp及其它内置对象。
JS中继承:
继承是面向对象中重要的组成部分。当创建自己的对象时你可以扩展或继承现有对象的属性和方法。继承为重用对象提供了便捷的途径,这样你就可以把精力完全集中于新的改进代码中。
与传统的面向对象语言不同,JavaScript是基于原型的面向对象者就导致无法从一个类扩展出另一个类的底层类结构。在JS中继承是通过简单的从一个对象原型向另一个对象原型复制方法而实现的。我们看一下这个例子:
- <title>继承</title>
- <script type="text/javascript">
- function init(){
- var person={};
- 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();
- }
- window.onload=init;
- </script>
那么结果是这样的:
这就说明JS继承只是通过简单的从一个对象原型向另一个对象原型复制方法而实现的。
对象成员:
1、数组的两种实现方案
顺序数组、散列数组(key,value)
2、对象=关联数组=属性包=存储体
3、只有成员访问这个操作。(JavaScript只有属性,没有方法)。我们认为恶属性其实就是一个key(属性名)和value(属性值)。看个例子:
- <script type="text/javascript">
- function init(){
- alert(document.body);
- }
- window.onload=init;
- </script>
我们运行的结果是:
document.body在ie里边就是一个object;这就说明document.body其实就是一个对象,只不过浏览器是按照遵循的w3c标准的来应该显示的。下面我们再打印一个东西:
- <script type="text/javascript">
- function init(){
- alert(document.getElementById);
- }
- window.onload=init;
- </script>
我们打印出来的是一个:
其实就是一个function,是那么一回事,当一个对象被传递到alert函数中时,那么所有对象都是object的实例,由于object类有一个t