日常生活中的所有东西都是对象,而具有同种属性的一类事物被称为类,人、动物、植物、车都是类(是抽象的),而姚明这个人就是一个具体的对象。
对象是类的实例化,比如唐伯虎点秋香里面的小强是蟑螂的实例化。
我们一般不会用类的名称类称呼一个对象。
周星驰说“小强,你死得好惨啊!”,而不是说“蟑螂,你死得好惨啊!”。
这里“蟑螂”是类名,而小强是对象的名称。
属性用来描述具体某个对象的特征。比如姚明身高2.26M,体重100KG,这里身高、体重都是属性。
面向对象的思想就是把一切都看成对象,而对象一般都由属性+方法组成,比如说张三,嘴巴可以看成他的一个属性,而说话成可以看成他的一个方法,其实方法就是一些function函数。
属性属于对象静态的一面,用来形容对象的一些特性,方法属于对象动态的一面,你可以些方法来操作一个对象,我们把属性合方法称为这个对象的成员。
总结下:
类:具有同种属性的对象称为类,是个抽象的概念。比如说:汽车、人、狗、神;
对象:日常生活中的所有东西都是对象,是类的实例化。比如说:小强是蟑螂的实例化,
属性:用来描述具体某个对象的特征的是属性,是静态的。比如:姚明身高2.26米;
方法:每个对象有它们自己的行为或者是使用它们的方法,比如说一只狗会跑会叫等,我们把这些行为称之为方法,是动态的,可以使用这些方法来操作一个对象;
类的成员:属性和方法称为这个对象的成员,因为它们是构成一个对象的主要部分,没有了这两样东西,那么对象也没什么存在意义了。
下面介绍下在javascript中如何声明一个类
在java,c#等语言中,是以class关键字来声明一个类的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//比如在C#中声明一个Person类
//这是一个典型的类,它包含一个字段、一个方法和一个称为构造函数的特殊方法
public
class
Person{
// Field
public
string
name;
// Constructor
public
Person(name){
name = name;
}
// Method
public
void
Sayhello(
string
friend){
System.Console.WriteLine(
"hello!"
+ friend +
",my name is"
+name);
}
}
|
但是在javascript中使用了与声明函数一样的方式来声明类,这让许多初学Js的同学很迷惑,不过熟悉了自然就理解了。
下面我们用javascript来实现上面的Person类.
PS:虽然javascript不是“面向对象”的语言,最多只能说是“基于对象”,但是如果是初学者,最好不要太过于纠结这个,我们索性就把他当作面向对象的语言,只是形式上有些差别。
1
2
3
4
5
6
7
8
9
10
11
|
//这里用js定义了一个与上面c#定义的一样功能的类
//function就是Person类的构造函数
//构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.
function
Person(name){
// Field
this
.name = name;
// Method
this
.Sayhello =
function
(friend){
document.write(
"hello!"
+ friend +
",my name is"
+name);
}
}
|
上面说过具有同种属性的事物被称为类,是个抽象的东西
我们使用类作为母板来创建一个对象,这个过程倍称为“实例化”,下面我们实例化一个Person类
1
2
|
var
lilei =
new
Person(
"lilei"
);
lilei.Sayhello(
"hanmeimei"
);
//输出:hello!hanmeimei,my name is lilei
|
TODO:字段,属性,静态属性,原型等概念