要想知道什么是JavaScript 之面向对象编程,就要先了解对象指的是什么?
依我的了解,对象就是“人”、“职位”、“狗”、“车”等等自然界存在的实体和抽象的事物,也就是万物皆对象。
而面向对象编程就是通过程序把自然界的这些对象的“属性”,“行为”进行映射!通俗地说,就是通过程序来描述自然界事物的“属性”与“行为”。
举个栗子:
我想对“人”(对象)进行编程。
“人”有“名字”、“性别”、“出生日期”等等的属性。“人”还有“睡觉”、“吃饭”、“打球”等等的行为。
把“人”的这些“属性”和“行为”整合在一起,就是程序里所说的类(class).”人”的“属性”对应着类(class)中“变量”(也可以是“常量”),“人”的“行为”对应着类中的“方法”。
//对"人"这个对象进行编程(也就是对"人"这个对象进行封装,封装人的"属性"和"行为")
function person(name,sex,age){
this.name=name;//人的名字(属性)
this.sex=sex;//人的性别(属性)
this.age=age;//人的年龄(属性)
}
//"人"在现实世界的行为“睡觉”。
person.prototype.sleep=function(){
alert("睡觉啦!");
}
//现实世界中“人”没有并“显示名字”这种行为,但由于程序的需要,为"人"添加的一种"行为"(方法);
person.prototype.showName=function(){
alert("名字是:"+this.name);
}
上面的程序就是就是对“人”进行封装,封装成一个类(class),这个类就是专门描述“人”的而不是描述其他的,属于“人”的类;
然而,这个person类是”静止”的,可以说它是一个模型(model),是描述“人”的模型.要想它“活起来”必须进行实例化(具体化)!
举个栗子:
“new”这个关键字是用来创建对象的,而创建对象就必须要有类(模型)。”new + 类“就是创建对象。
//创建一个person对象,然后通过变量p来保存,由于p保存了person对象,也可以说p是一个对象,也就是对象p是person的实例化;
var p=new Person("李四","男","19");
//对象p调用sleep()方法,也就是这个具体的“人”做了“睡觉”这个行为。
p.sleep();