面向过程
优点:性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。
缺点:不灵活、复用性较差
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
构造函数
封装是面向对象思想中比较重要的一部分,js面向对象可以通过构造函数实现的封装
把公共的属性和方法抽取封装到构造函数里面来实现数据的共享,这样创建的实例对象可以使用这些属性和方法了
function Person(name, age) {
// 将属性封装在构造函数中
var _name = name;
var _age = age;
// 封装方法
this.getName = function() {
return _name;
};
this.getAge = function() {
return _age;
};
this.setName = function(name) {
_name = name;
};
this.setAge = function(age) {
_age = age;
};
}
// 创建一个Person对象
var person = new Person('张三', 20);
// 调用方法
console.log(person.getName()); // 输出:张三
console.log(person.getAge()); // 输出:20
// 修改属性
person.setName('李四');
person.setAge(25);
// 再次调用方法
console.log(person.getName()); // 输出:李四
console.log(person.getAge()); // 输出:25
总结:
- 构造函数体现了面向对象的封装特性
- 构造函数实例创建的对象彼此独立、互不影响
封装是面向对象思想中比较重要的一部分,js面向对象可以通过构造函数实现的封装。
前面我们学过的构造函数方法很好用,但是 存在浪费内存的问题