js 构造函数

185 阅读1分钟

面向过程

优点:性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。

缺点:不灵活、复用性较差

面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护

缺点:性能比面向过程低

构造函数

封装是面向对象思想中比较重要的一部分,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

总结:

  1. 构造函数体现了面向对象的封装特性
  2. 构造函数实例创建的对象彼此独立、互不影响

封装是面向对象思想中比较重要的一部分,js面向对象可以通过构造函数实现的封装。

前面我们学过的构造函数方法很好用,但是 存在浪费内存的问题