返回
面向对象编程,对象思考JS中
前端
2023-11-13 15:16:04
我们常说的面向对象,少不了几个名词:封装、继承、多态。
封装 :把数据和方法都封装成一个整体,这个整体就称之为“对象”。它可以让我们减少沟通成本,也减少思维负担。
继承 :继承的意思就是复用,直接用另外一件事情的属性和方法,只需要写自己需要的属性和方法即可。
多态 :一个对象可以有多个形态,可以使一个东西更加灵活。
在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中的面向对象编程。