OOP-封装
面向对象开发的本质是为了对复杂的事物进行简化,将我们关心的属性和行为抽象出来,封装成一个对象,这样更符合我们的思维,更加灵活,有利于重用和维护
OOP 开发的第一步就是进行抽象和封装,例如我们对人的特征进行提取,我们首先找出来我们关心的点,例如我们关心人的一些代表属性(姓名、性别...)和日常行为(走路、说话...),特征的提取就是我们的抽象过程,完成了抽象的过程我们就可以对我们抽象出的点进行封装
function Person(name,sex){
this.name = name;
this.sex = sex;
this.walk = function(){
console.log("walking...")
}
this.speak = function(word){
console.log("Speaking:" + word);
}
}
这样我们完成了抽象和封装,获得一个人的模版,我们用这个模块就可以量产人了(程序届这个事情是不是太简单了哈哈)
var david = new Person("David","boy");
var lucy = new Person("Lucy","girl");
是不是很爽,随随便便就可以new一个人了,确实不错,但是这种方法有一个缺点,就是在我们new出来的 David 和 Lucy 中都有walk和speak两个方法,这两个方法完全一致的,但是 David 和 Lucy 每个人都有一份,这就造成了对系统资源的浪费。在 Java 等面向对象的语言中会有底层的优化,JavaScript(ES5) 的实现不是自动的,可以使用原型链prototype对象来完成的。