当前位置:首页 > JavaScript

JS如何实现面向对象

2026-03-01 08:54:50JavaScript

基于原型的面向对象实现

JavaScript 通过原型链实现面向对象编程。每个对象都有一个隐藏的 [[Prototype]] 属性(可通过 __proto__Object.getPrototypeOf() 访问),用于继承属性和方法。

构造函数模式:

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

Person.prototype.sayHello = function() {
  console.log(`Hello, I'm ${this.name}`);
};

const person = new Person('Alice');
person.sayHello();

ES6 class 语法糖

ES6 引入的 class 语法更接近传统面向对象语言:

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise`);
  }
}

class Dog extends Animal {
  speak() {
    super.speak();
    console.log(`${this.name} barks`);
  }
}

const dog = new Dog('Rex');
dog.speak();

对象字面量与工厂模式

对于简单对象可以直接使用字面量:

const car = {
  brand: 'Toyota',
  drive() {
    console.log(`Driving ${this.brand}`);
  }
};

工厂函数模式:

function createUser(name) {
  return {
    name,
    greet() {
      console.log(`Hi, ${this.name}`);
    }
  };
}

私有成员实现

通过闭包或 ES2022 私有字段:

// 闭包方式
function Counter() {
  let count = 0;
  this.increment = function() {
    return ++count;
  };
}

// ES2022 私有字段
class Wallet {
  #balance = 0;
  deposit(amount) {
    this.#balance += amount;
  }
}

混入模式(Mixin)

实现多重继承的方式:

const canEat = {
  eat() {
    console.log('Eating');
  }
};

const canWalk = {
  walk() {
    console.log('Walking');
  }
};

function Person() {}
Object.assign(Person.prototype, canEat, canWalk);

静态方法与属性

使用 static 关键字定义:

class MathUtils {
  static PI = 3.14159;
  static square(x) {
    return x * x;
  }
}
console.log(MathUtils.square(5));

属性描述符

通过 Object.defineProperty 控制对象属性:

JS如何实现面向对象

const obj = {};
Object.defineProperty(obj, 'readOnly', {
  value: 42,
  writable: false,
  enumerable: true
});

分享给朋友:

相关文章

vue如何实现到期提醒

vue如何实现到期提醒

实现思路 在Vue中实现到期提醒功能,可以通过计算日期差、定时检查和通知用户三个核心步骤完成。需要结合Vue的响应式特性和JavaScript的日期处理能力。 计算日期差 使用JavaScript的…

如何实现java序列化

如何实现java序列化

实现Java序列化的方法 1. 实现Serializable接口 要使一个类可序列化,需要让该类实现java.io.Serializable接口。这是一个标记接口,没有任何方法需要实现。 publi…

vue如何实现分离

vue如何实现分离

Vue 实现代码分离的方法 Vue 提供了多种方式实现代码分离,提升项目的可维护性和模块化程度。以下是常见的几种方法: 组件化开发 将功能拆分为独立的 Vue 组件,每个组件包含自己的模板、逻辑和样…

vue如何实现加减

vue如何实现加减

在 Vue 中实现加减功能 使用数据绑定和事件处理 通过 Vue 的数据绑定和事件处理机制可以轻松实现加减功能。定义一个数据变量存储数值,通过方法增减该变量。 <template>…

如何实现vue验证

如何实现vue验证

Vue 表单验证的实现方法 Vue 表单验证可以通过多种方式实现,包括内置指令、第三方库和自定义验证逻辑。以下是几种常见的方法: 使用 Vue 内置指令进行基础验证 Vue 提供了 v-model…

vue如何实现刷新

vue如何实现刷新

实现页面刷新的方法 在Vue中实现刷新功能可以通过以下几种方式实现: 使用location.reload() 直接调用浏览器的原生方法强制刷新整个页面: methods: { refreshP…