1.1.1对象的抽象:抽象是一种归纳或总结,对象是现实世界物体特征的实例。
(1)一切皆是对象。
(2)类是对象的抽象。
1.1.2 对象的使用:
当对象被抽象为类以后,就可以创建具体的实例来操作了。每个实例都是其所属类的一个精确而又不同的个体,在OOP编程中,类的实例被称为对象。由于对象是类的实例,所以创建对象的操作称为实例化。
tip:
类不是面向对象编程的实质性内涵。面向对象编程的实质性内涵是将所有的业务逻辑单元都视为一个对象,(该对象是抽象化的);并且,类也不是唯一的用来完成面向对象编程的方法,例如,js使用构造器和原型来完成面向对象的开发。
不能将面向对象误解为面向类。
1.1.3 易犯的错误
对象:一般认为对象是现实世界物体特征的抽象个体,它反映了系统为止保存信息和与它交互的能力。它的一些属性及功能的一个封装体,在程序设计领域,可以用公式表示:
对象=数据+作用于这些数据上的操作(算法)
类是具有相同操作功能(方法)和数据(属性)的对象的集合,是抽象后的集合,它给规定了其中对象的共有属性和方法;对象是类的实例。
对象和类的关系相当于一般的程序设计语言中变量和变量类型的关系。所以,类有时也被称为一种数据类型,它可以看作抽象数据类型的具体实现。
1.1.4 面向对象程序设计的优点和基本特征
基本优点:
(1)由于面向对象程序设计的可重用性,可以在应用程序中大量采用成熟的类库,从而可以缩短开发时间。
(2)应用程序更易于维护、更新、升级。
基本特征:
(1)封装性
(2)继承性
(3)多态性
(4)抽象性(一些用户设计总结的):一是过程抽象,二是数据抽象。
1.1.5 面向对象和结构化程序设计的区别:
最大的区别在于前者首先关心的是要所处理的数据,而后者首先关心的是功能。
面向对象的编程 | 面向过程的编程 |
Methods方法 | Function函数 |
Object方法 | Modules模块 |
Message方法 | Argument参数 |
Attribute属性 | Variable变量 |
1.2 创建类
demo:
//定义一个类
function HelloWord(){
this.printInfo = function(){
return "hi, word!";
}
}
//创建类的实例
var oHelloWord = new HelloWord();
//调用方法,将结果存在一个变量
var result = oHelloWord.printInfo();
//弹出结果
alert(result);
类的定义:
(1)类由两部分组成:类声明和类体。类声明由构造函数定义,函数体就是类体,类的属性和方法都在类体中定义:
function 类名(arg_1,arg_2,....,arg_n){
//类体
}
类名首字母大写,按照帕斯卡命名规范,
(2)可以在类体内定义属性。若要创建属性,最简单的方法是使用 this 关键字定义变量的方式。
this.age;
(3)可以在类体内定义方法。若要创建方法,可以使用function 关键字创建匿名函数定义,将匿名函数赋给一个变量,并且使用 this 关键字引用该变量。
this.showInfo = function(){
return(~)
}
和属性的定义类似,只不过属性的类型是一个Function。
1.2.3 关于构造器的方法
在使用函数创建类时,函数本身也被称为该类的构造器(也称构造器方法、构造方法、构造函数等)。
构造器方法是没有返回值的。当创建该类的实例时,必须调用该类的构造器方法。
也可以构造一个带有参数的类,使用参数可以为类中不同的对象改变属性。
1.2.4 获取构造器方法
所有的构造器都是类,但是,并非所有的类都是构造器。内建的类都是使用构造器创建的类,但是宿主对象( 例如 window、navigator )可能不是。
对实例使用 constructor 属性,便可以获取实例的构造器方法。
1.3 类的使用
在创建类了以后,就可以使用类了,要使用类,首先必须创建该类的一个实例,一般会将实例作为值赋给一个变量。在创建类的一个实例后,该实例就会捆绑该类中定义的方法和属性了,然后就可以调用方法和属性了。类的实例也被称为对象。
tip:静态类无需实例化就可以直接调用类的方法和属性。在使用属性和方法的时候,要查看帮助文档进行了解。例如:Math的静态属性PI。
1.3.1 创建类的实例
一般会用 new 关键字。
js中的类也是某一样事物的抽象,也必须创建实例。
构造器方法也可以带参数。
以下几种类不需要使用new 就可以实例化。
(1)Object类
var myCircle = new Object();
var myCircle = {};
可以同时给她赋值:var myCircle = {radius:5,area:3.14*5*5};
在{}也可以使用变量:
var radius = 5;
var myCircle = {radius:radius,area:(Math.PI*radius*radius)}; 括号将对它们中的表达式进行计算,然后将返回的值赋给属性 area。
可以在嵌套数组把Object 类初始化。
var newObject = {nickName:"xiaowu",projects:["Flash","Hbuilder"]};
2、Array 类的实例化
var myArray = new Array();
var myArray = [];
为该实例赋值:var myArray = [5,3.14*5*5];
在[]内也可以使用变量:
var radius = 5;
var myArray = [radius,Math.PI*radius*radius];
1.3.2 访问对象属性
使用“.”运算符。
属性的使用分为两个方面:
(1)获取对象属性的值,也被称为读取属性。
(2)设置对象属性的值,也被称为写属性值,为属性赋值或改变属性的值。
1.3.3 调用对象的方法
类中定义的函数被称为方法,可以通过在类的实例后点“ . ”运算符的后面加上方法名来调用对象的方法。方法传递参数就像调用函数那样。