返回

面向对象编程,对象思考JS中

前端

我们常说的面向对象,少不了几个名词:封装、继承、多态。

封装 :把数据和方法都封装成一个整体,这个整体就称之为“对象”。它可以让我们减少沟通成本,也减少思维负担。

继承 :继承的意思就是复用,直接用另外一件事情的属性和方法,只需要写自己需要的属性和方法即可。

多态 :一个对象可以有多个形态,可以使一个东西更加灵活。

在JS里,面向对象的思想是如何体现的呢?我们知道JS是一个基于原型的语言,它没有类的概念,但它的对象也是有属性和方法的。

属性 :对象的数据,也就是对象的特征或状态。比如,一个人的年龄、性别、身高都是他的属性。

方法 :对象的行为,也就是对象能做什么。比如,一个人可以吃饭、睡觉、走路,这些都是他的方法。

我们可以通过两种方式来创建对象:

第一种:对象字面量

const person = {
  name: '小明',
  age: 18,
  gender: '男'
};

第二种:构造函数

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
}

然后我们可以通过new来创建对象:

const person = new Person('小明', 18, '男');

继承

在JS中,我们可以通过原型链来实现继承。原型链就是通过__proto__属性来连接对象的。

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
}

function Student(name, age, gender, grade) {
  Person.call(this, name, age, gender);
  this.grade = grade;
}

Student.prototype = new Person();

多态

在JS中,多态可以通过函数重载和方法重写来实现。

函数重载 :是指同一个函数名,但参数不同。

function add(a, b) {
  return a + b;
}

function add(a, b, c) {
  return a + b + c;
}

方法重写 :是指子类重写父类的方法。

function Person(name) {
  this.name = name;
}

Person.prototype.getName = function() {
  return this.name;
}

function Student(name, grade) {
  Person.call(this, name);
  this.grade = grade;
}

Student.prototype.getName = function() {
  return this.name + ', grade ' + this.grade;
}

面向对象编程是一种非常重要的编程思想,它可以帮助我们写出更易于维护和扩展的代码。希望这篇文章能帮助你理解JS中的面向对象编程。