当前位置:首页 > JavaScript

JS如何实现面向对象

2026-01-30 17:51:07JavaScript

基于原型的面向对象实现

JavaScript 采用基于原型的面向对象模式,通过构造函数和原型链实现继承。构造函数用于定义对象的属性和方法,原型用于共享方法和属性。

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

Person.prototype.greet = function() {
  return `Hello, my name is ${this.name}`;
};

const person1 = new Person('Alice', 25);
console.log(person1.greet());

使用 class 语法糖

ES6 引入了 class 语法,使面向对象编程更接近传统语言风格。class 本质仍是基于原型的语法糖。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    return `Hello, my name is ${this.name}`;
  }
}

const person2 = new Person('Bob', 30);
console.log(person2.greet());

实现继承

JavaScript 通过原型链实现继承。子类可以继承父类的属性和方法,并可以添加或覆盖它们。

class Employee extends Person {
  constructor(name, age, jobTitle) {
    super(name, age);
    this.jobTitle = jobTitle;
  }

  greet() {
    return `${super.greet()} and I work as ${this.jobTitle}`;
  }
}

const employee = new Employee('Charlie', 35, 'Developer');
console.log(employee.greet());

封装与访问控制

虽然 JavaScript 没有内置的访问修饰符,但可以通过闭包或 Symbol 实现类似效果。

class BankAccount {
  #balance = 0; // 私有字段

  deposit(amount) {
    if (amount > 0) this.#balance += amount;
  }

  getBalance() {
    return this.#balance;
  }
}

const account = new BankAccount();
account.deposit(100);
console.log(account.getBalance());

多态实现

JavaScript 的动态类型系统天然支持多态,不同对象可以对相同方法名做出不同响应。

class Animal {
  speak() {
    return 'Some sound';
  }
}

class Dog extends Animal {
  speak() {
    return 'Woof!';
  }
}

class Cat extends Animal {
  speak() {
    return 'Meow!';
  }
}

const animals = [new Animal(), new Dog(), new Cat()];
animals.forEach(animal => console.log(animal.speak()));

对象组合优于继承

在复杂场景下,使用对象组合比深度继承更灵活。通过将功能分解为独立对象并组合使用。

const canSwim = {
  swim() {
    return 'Swimming';
  }
};

const canFly = {
  fly() {
    return 'Flying';
  }
};

class Duck {
  constructor() {
    Object.assign(this, canSwim, canFly);
  }
}

const duck = new Duck();
console.log(duck.swim(), duck.fly());

JS如何实现面向对象

分享给朋友:

相关文章

权限管理vue如何实现

权限管理vue如何实现

基于路由的权限控制 在Vue中可以通过路由守卫实现页面级权限控制。定义路由时添加meta字段标记权限角色: const routes = [ { path: '/admin',…

vue如何实现重新实现主题

vue如何实现重新实现主题

Vue 主题切换的实现方法 使用 CSS 变量动态切换主题 定义主题相关的 CSS 变量,通过修改这些变量实现主题切换。在根元素(如 :root)中定义默认主题的变量,在特定类名下定义其他主题的变量。…

vue项目如何实现

vue项目如何实现

安装Vue.js 通过npm或yarn安装Vue.js。确保Node.js环境已配置完成。 npm install vue # 或 yarn add vue 创建Vue项目 使用Vue CLI工具…

前段vue如何实现

前段vue如何实现

Vue 前端实现方法 Vue 是一款流行的前端框架,用于构建用户界面。以下是一些常见的 Vue 实现方法: 组件化开发 Vue 的核心思想是组件化开发。每个组件可以独立封装逻辑、模板和样式,便于复…

vue如何实现录音

vue如何实现录音

使用Web Audio API实现录音 在Vue中实现录音功能可以通过Web Audio API结合MediaRecorder API来完成。以下是一个基础实现方案: 安装必要的依赖: npm…

vue如何实现uuid

vue如何实现uuid

生成 UUID 的方法 在 Vue 中生成 UUID 可以通过第三方库或原生 JavaScript 实现。以下是几种常见方法: 使用 uuid 库 安装 uuid 库: npm install…