🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
💬 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
文章目录
JavaScript 是一种多范式的编程语言,支持面向对象编程(OOP)。面向对象编程以对象为基础,强调通过对象的属性和方法来组织和管理代码。下面将详细介绍 JavaScript 中的面向对象编程,包括其基本概念、特性和实现方式。
1. 面向对象编程的基本概念
1.1 对象
对象是 JavaScript 的核心概念,它是数据的集合,用于表示现实世界中的实体。对象由属性(键)和方法(函数)组成。
let car = {
brand: "Toyota",
model: "Camry",
year: 2020,
start: function() {
console.log("Car started");
}
};
1.2 类
类是面向对象编程中的一种抽象概念,用于定义一类对象的结构和功能。在 JavaScript 中,可以通过构造函数和 ES6 的 class
语法来定义类。
1.3 实例
实例是由类创建的对象,它是类的具体实现。每个实例都可以通过类的构造函数进行初始化。
2. JavaScript 中的面向对象特性
2.1 封装
封装是将数据和操作数据的方法包裹在对象中的特性。通过封装,可以隐藏对象的内部实现,提供公共接口与外界交互。
function Person(name, age) {
this.name = name;
this.age = age;
this.getInfo = function() {
return `${this.name} is ${this.age} years old`;
};
}
let person = new Person("Alice", 30);
console.log(person.getInfo()); // Alice is 30 years old
2.2 继承
继承使得一个类可以从另一个类获取属性和方法。在 JavaScript 中,可以通过原型链(Prototype Chain)和 class
语法实现继承。
2.2.1 原型链
function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function() {
console.log(`${this.name} makes a noise.`);
};
function Dog(name) {
Animal.call(this, name); // 继承属性
}
Dog.prototype = Object.create(Animal.prototype); // 继承方法
Dog.prototype.constructor = Dog;
let dog = new Dog("Rover");
dog.speak(); // Rover makes a noise.
2.2.2 ES6 class
语法
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
let dog = new Dog("Rover");
dog.speak(); // Rover barks.
2.3 多态
多态是指同一操作作用于不同的对象可以产生不同的效果。在 JavaScript 中,通过方法重写(Override)来实现多态。
class Animal {
speak() {
console.log("Animal speaks");
}
}
class Dog extends Animal {
speak() {
console.log("Dog barks");
}
}
class Cat extends Animal {
speak() {
console.log("Cat meows");
}
}
let animals = [new Dog(), new Cat()];
animals.forEach(animal => animal.speak());
// Dog barks
// Cat meows
3. JavaScript 创建对象的方法
3.1 原始对象字面量🤍
let obj = {
key: "value"
};
3.2 构造函数🤍🤍
function Person(name, age) {
this.name = name;
this.age = age;
}
let person1 = new Person("Alice", 30);
3.3 class
语法(ES6)🤍🤍🤍
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let person2 = new Person("Bob", 25);
3.4 Object.create()🤍🤍🤍🤍
let proto = {
greet() {
console.log("Hello!");
}
};
let obj = Object.create(proto);
obj.greet(); // Hello!
4. 结论
JavaScript 的面向对象编程通过对象、类、封装、继承和多态等特性,为开发者提供了强大的功能和灵活性。通过充分理解这些概念以及如何在 JavaScript 中使用它们,可以创建结构良好、可维护和易于扩展的代码。使用现代 ES6 的 class
语法,使得面向对象编程在 JavaScript 中更加清晰和简洁。